SIGSEGV in GC_register_finalizer_inner
Boehm, Hans
hans.boehm@hp.com
Tue Oct 26 18:15:00 GMT 2004
I think it's important to track this down.
But this isn't very much to go on. Is there a reason we
can't get line number information, and perhaps the value
of relevant local variables?
I think the finalizer registration code is probably being
invoked from an inlined maybe_remove_all_heavy() call.
But it would be good to confirm or refute that.
Failing that, the disassembly of the 100 instructions or so
surrounding the faulting instruction (0x40523321 in this case),
together with the value of the base register for the faulting
load or store, might help in manually mapping this back to
the source.
It would also be good to file this in bugzilla, with any
additional information you can get. Please include me on the
cc: list.
Thanks.
Hans
> -----Original Message-----
> From: java-owner@gcc.gnu.org
> [mailto:java-owner@gcc.gnu.org]On Behalf Of
> Rutger Ovidius
> Sent: Monday, October 25, 2004 10:52 AM
> To: java@gcc.gnu.org
> Subject: SIGSEGV in GC_register_finalizer_inner
>>> Hi,
>> When I leave my gcj (4.0.0 20041014 - linux) app running for a few
> days, it eventually crashes/locks up in what looks like an infinite
> loop of SIGSEGVs (I did an strace on one process that was hung). I
> then ran the app under gdb twice (and waited 2 days each time) and the
> cause was the same each time. Does anyone have any hints on what the
> problem might be? Thanks.
>>> --- First time:
>> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 1115769776 (LWP 8022)]
> 0x40523321 in GC_register_finalizer_inner () from ./lib/libgcj.so.6
> (gdb) bt
> #0 0x40523321 in GC_register_finalizer_inner () from
> ./lib/libgcj.so.6
> #1 0x40523513 in GC_register_finalizer_no_order () from
> ./lib/libgcj.so.6
> #2 0x403acf0d in _Jv_MonitorExit () from ./lib/libgcj.so.6
> #3 0x081d194c in ?? ()
> #4 0x081c4390 in ?? ()
> #5 0x080b60aa in ?? ()
> #6 0x4041d761 in java::util::Observable::notifyObservers ()
> from ./lib/libgcj.so.6
> #7 0x4041d627 in java::util::Observable::notifyObservers ()
> from ./lib/libgcj.so.6
> #8 0x080ebd88 in ?? ()
> #9 0x081087b8 in ?? ()
> #10 0x404288ed in java::util::Timer$Scheduler::run () from
> ./lib/libgcj.so.6
> #11 0x403d7855 in java::lang::Thread::run () from ./lib/libgcj.so.6
> #12 0x403b1c3b in _Jv_ThreadRun () from ./lib/libgcj.so.6
> #13 0x40511f50 in _Jv_ThreadRegister () from ./lib/libgcj.so.6
> #14 0x4052f418 in GC_start_routine () from ./lib/libgcj.so.6
> #15 0x435f979c in start_thread () from /lib/tls/libpthread.so.0
> #16 0x433daf2a in clone () from /lib/tls/libc.so.6
>> c
> ctrl-c (since it is in a loop I guess)
>> Program received signal SIGINT, Interrupt.
> [Switching to Thread 1081245824 (LWP 8018)]
> 0x432e8c32 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
> (gdb) bt
> #0 0x432e8c32 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
> #1 0x435fe7bb in __lll_mutex_lock_wait () from
> /lib/tls/libpthread.so.0
> #2 0x435fb976 in _L_mutex_lock_26 () from /lib/tls/libpthread.so.0
> #3 0x00000000 in ?? ()
> #4 0xbfffec98 in ?? ()
> #5 0x4052f307 in GC_lock () from ./lib/libgcj.so.6
> Previous frame identical to this frame (corrupt stack?)
>>>> --- Second time:
>> Program received signal SIGSEGV, Segmentation fault.
> 0x40523321 in GC_register_finalizer_inner () from ./lib/libgcj.so.6
> (gdb) bt
> #0 0x40523321 in GC_register_finalizer_inner () from
> ./lib/libgcj.so.6
> #1 0x40523513 in GC_register_finalizer_no_order () from
> ./lib/libgcj.so.6
> #2 0x403acf0d in _Jv_MonitorExit () from ./lib/libgcj.so.6
> #3 0x081d184f in ?? ()
> #4 0x081c3730 in ?? ()
> #5 0x081c2e9e in ?? ()
> #6 0x0810f84a in ?? ()
> #7 0x08106b3a in ?? ()
> #8 0x08106d99 in ?? ()
> #9 0x403a10d1 in gnu::java::lang::MainThread::call_main ()
> from ./lib/libgcj.so.6
> #10 0x404404a0 in gnu::java::lang::MainThread::run () from
> ./lib/libgcj.so.6
> #11 0x403b1c3b in _Jv_ThreadRun () from ./lib/libgcj.so.6
> #12 0x40379020 in _Jv_RunMain () from ./lib/libgcj.so.6
> #13 0x40379157 in JvRunMain () from ./lib/libgcj.so.6
> #14 0x08059934 in ?? ()
> #15 0x084bd8a0 in data_start ()
> #16 0x00000001 in ?? ()
> #17 0xbffff454 in ?? ()
> #18 0x08202e3a in _Unwind_Find_FDE ()
> #19 0x43315750 in __libc_start_main () from /lib/tls/libc.so.6
> #20 0x08059871 in ?? ()
>> c
> ctrl-c
>>> Program received signal SIGINT, Interrupt.
> 0x432e8c32 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
> (gdb) bt
> #0 0x432e8c32 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
> #1 0x435fe7bb in __lll_mutex_lock_wait () from
> /lib/tls/libpthread.so.0
> #2 0x435fb976 in _L_mutex_lock_26 () from /lib/tls/libpthread.so.0
> #3 0x4067d800 in vtable for
> gnu::gcj::runtime::SharedLibLoader () from ./lib/libgcj.so.6
> #4 0xbfffed3c in ?? ()
> #5 0x4052f307 in GC_lock () from ./lib/libgcj.so.6
> Previous frame identical to this frame (corrupt stack?)
>>
More information about the Java
mailing list