[parisc-linux] User space locks -- what's wrong
Carlos O'Donell
carlos at systemhalted.org
Sun Jun 11 20:42:09 MDT 2006
On 6/11/06, John David Anglin <dave at hiauly1.hia.nrc.ca> wrote:
> > That is good news! It's an unfortuante side-effect of our lock code.
> > Which goes away in NPTL ... thankfully.
>
> Here's another one (libjava Process_3.exe):
>
> (gdb) bt
> #0 0x4005e1f4 in nanosleep () from /lib/libpthread.so.0
> #1 0x40059270 in __pthread_timedsuspend_new () from /lib/libpthread.so.0
> #2 0x40056414 in pthread_cond_timedwait at GLIBC_2.2 () from /lib/libpthread.so.0
> #3 0x41872de8 in _Jv_CondWait (cv=0x402bde20, mu=0x402bde30,
> millis=<value optimized out>, nanos=0)
> at ../../../gcc/libjava/posix-threads.cc:169
> #4 0x4185f3d0 in java::lang::Object::wait (this=0x0, timeout=1000, nanos=0)
> at ../../../gcc/libjava/java/lang/natObject.cc:1333
> #5 0x4184a48c in java.lang.Object.wait(long)void (this=0x432fd9d0,
> timeout=35486947928) at ../../../gcc/libjava/java/lang/Object.java:449
> #6 0x41c97ee0 in java.lang.ConcreteProcess$ProcessManager.run()void (
> this=0x40536f50) at ConcreteProcess.java:142
> #7 0x41864104 in _Jv_ThreadRun (thread=0x40536f50)
> at ../../../gcc/libjava/java/lang/natThread.cc:302
> #8 0x41872770 in really_start (x=0x401d9830)
> at ../../../gcc/libjava/posix-threads.cc:432
> #9 0x424d93e0 in GC_start_routine (arg=0x401f6e80)
> at ../../../gcc/boehm-gc/pthread_support.c:1191
> #10 0x40057498 in pthread_start_thread () from /lib/libpthread.so.0
> #11 0x40933754 in clone () from /lib/libc.so.6
> #12 0x40933754 in clone () from /lib/libc.so.6
> Previous frame identical to this frame (corrupt stack?)
>
> After the testsuite had completed, I noticed that two Process_3 processes
> were still running. I attached to both with strace but there wasn't any
> syscall activity in either. I then killed the process that top said was
> using almost 100% of the cpu with SIGABRT and got a core dump with the
> above backtrace. I'm now left with:
>
> dave 7124 1 92 08:13 ? 12:29:14 [Process_3.exe]
>
> From past experience, rebooting is the only way to get rid of this
> task. This was using a 32-bit c3k kernel (2.6.17-rc3-pa3).
I've looked through libjava to see if there were any mutex initializer
problems, but I haven't seen anything.
However, the mutex objects look like they are being cached? There
could be a scenario where an allocated and locked mutex is put back in
the cache, such a mutex cannot be cleaned without resetting with
__PTHREAD_MUTEX_INITIALIZER.
Cheers,
Carlos.
More information about the parisc-linux
mailing list