infinite recursion, SIGSEGV thrown and caught over and over, might be reflection related

Mark J Roberts mjr@znex.org
Mon Sep 3 03:47:00 GMT 2001


I just can't isolate this bug, so I'll try to summarize what's going
on as best I can. You can use
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/freenet/Freenet/?only_with_tag=
to browse the code.
node/State.java contains,
 
 recv = this.getClass().getDeclaredMethod(
 "receivedMessage", new Class[] { Freenet.node.Node.class,
 mo.getClass() } );
 ....
 return (State) recv.invoke(this, new Object[] { n, mo } );
The code that's eventually called after this can throw exceptions;
in this case, node/states/request/Pending.java:355 is throwing one.
Now the bug: when this happens, a segfault occurs. Apparently the
SIGSEGV is caught, and then it's thrown and caught over and over in
an infinite recursion until the stack overflows.
In this gdb log, I've printed the backtrace as of the first SIGSEGV,
and then what happens when I continue once:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 9226 (LWP 1620)]
_Z20_Jv_IsAssignableFromPN4java4lang5ClassES2_ (target=0x0, source=0x4027ddc0) at ../../../gcc/libjava/java/lang/Class.h:184
184 {
Current language: auto; currently c++
(gdb) bt
#0 _Z20_Jv_IsAssignableFromPN4java4lang5ClassES2_ (target=0x0, source=0x4027ddc0) at ../../../gcc/libjava/java/lang/Class.h:184
#1 0x40454de0 in _Jv_IsInstanceOf (obj=0x8187360, cl=0x0) at ../../../gcc/libjava/java/lang/natClass.cc:994
#2 0x4044290a in __gcj_personality_v0 (version=1, actions=1, exception_class=5138137972373280321, ue_header=0x807de30, context=0x41ac2c78)
 at ../../../gcc/libjava/exception.cc:337
#3 0x402ce66d in _Unwind_RaiseException (exc=0x807de30) at ../../gcc/gcc/unwind.inc:1042
#4 0x40442152 in _Jv_Throw (value=0x8187360) at ../../../gcc/libjava/exception.cc:93
#5 0x40171c9a in _ZN7Freenet4node6states7request7Pending10searchDataEPNS0_4NodeE () at Freenet/node/states/request/Pending.java:355
#6 0x40170133 in _ZN7Freenet4node6states7request7Pending24receivedRequestInitiatorEPNS0_4NodeEPNS2_16RequestInitiatorE ()
 at Freenet/node/states/request/Pending.java:128
#7 0x4016ddd3 in _ZN7Freenet4node6states7request13InsertPending15receivedMessageEPNS0_4NodeEPNS2_16RequestInitiatorE ()
 at Freenet/node/states/request/InsertPending.java:76
#8 0x4059a527 in ffi_call_SYSV () at ../../../gcc/libjava/java/lang/natSystem.cc:210
#9 0x4059a141 in ffi_call (cif=0x41ac305c,
 fn=0x4016dcd6 <_ZN7Freenet4node6states7request13InsertPending15receivedMessageEPNS0_4NodeEPNS2_16RequestInitiatorE>, rvalue=0x41ac3104,
 avalue=0x41ac2ff0) at ../../../gcc/libffi/src/x86/ffi.c:185
#10 0x40461923 in _Z18_Jv_CallAnyMethodAPN4java4lang6ObjectEPNS0_5ClassEP10_Jv_MethodbP6JArrayIS4_EP6jvalueSB_ (obj=0x80ade70,
 return_type=0x402765e0, meth=0x4027e7dc, is_constructor=0 '000円', parameter_types=0x805d288, args=0x41ac30b8, result=0x41ac3104)
 at ../../../gcc/libjava/java/lang/reflect/natMethod.cc:432
#11 0x40461ca5 in _Z18_Jv_CallAnyMethodAPN4java4lang6ObjectEPNS0_5ClassEP10_Jv_MethodbP6JArrayIS4_EPS7_IS2_E (obj=0x80ade70,
 return_type=0x402765e0, meth=0x4027e7dc, is_constructor=0 '000円', parameter_types=0x805d288, args=0x805d408)
 at ../../../gcc/libjava/java/lang/reflect/natMethod.cc:528
#12 0x40461205 in _ZN4java4lang7reflect6Method6invokeEPNS0_6ObjectEP6JArrayIS4_E (this=0x8324e60, obj=0x80ade70, args=0x805d408)
 at ../../../gcc/libjava/java/lang/reflect/natMethod.cc:175
#13 0x4013cd6a in _ZN7Freenet4node5State8receivedEPNS0_4NodeEPNS_13MessageObjectE () at Freenet/node/State.java:117
#14 0x40162ad1 in _ZN7Freenet4node6states3FCP12NewClientPut8receivedEPNS0_4NodeEPNS_13MessageObjectE ()
 at Freenet/node/states/FCP/NewClientPut.java:93
#15 0x4015b5a3 in _ZN7Freenet4node10StateChain8receivedEPNS0_5StateEPNS0_4NodeEPNS0_17NodeMessageObjectE () at Freenet/node/StateChain.java:113
#16 0x4015b048 in _ZN7Freenet4node10StateChain8receivedEPNS0_4NodeEPNS0_17NodeMessageObjectE () at Freenet/node/StateChain.java:41
#17 0x4015fe5c in _ZN7Freenet4node34StandardMessageHandler__U24_Ticket8receivedEPNS0_4NodeEPNS0_17NodeMessageObjectE ()
 at StandardMessageHandler.java:132
#18 0x4016019d in _ZN7Freenet4node34StandardMessageHandler__U24_Ticket13access__U24_2EPS1_PNS0_4NodeEPNS0_17NodeMessageObjectE ()
 at StandardMessageHandler.java:148
#19 0x4016102a in _ZN7Freenet4node22StandardMessageHandler6handleEPNS_13MessageObjectE () at Freenet/node/StandardMessageHandler.java:64
#20 0x401815b0 in _ZN7Freenet17Ticker__U24_Event3runEv () at Ticker.java:173
#21 0x402294c2 in _ZN7Freenet6thread7EThread3runEv () at Freenet/thread/EThread.java:103
#22 0x40474293 in _ZN4java4lang6Thread3runEv (this=0x80f3de8) at ../../../gcc/libjava/java/lang/Thread.java:132
#23 0x4045e37c in _Z13_Jv_ThreadRunPN4java4lang6ThreadE (thread=0x80f3de8) at ../../../gcc/libjava/java/lang/natThread.cc:285
#24 0x40599690 in _Z12really_startPv (x=0x8061db0) at ../../../gcc/libjava/posix-threads.cc:374
#25 0x4074115a in GC_start_routine (arg=0x8374d60) at ../../../gcc/boehm-gc/linux_threads.c:1340
#26 0x40764cf8 in pthread_start_thread (arg=0x41ac3be0) at manager.c:274
#27 0x40764dca in pthread_start_thread_event (arg=0x41ac3be0) at manager.c:298
(gdb) cont
Continuing.
Program received signal SIGSEGV, Segmentation fault.
_Z20_Jv_IsAssignableFromPN4java4lang5ClassES2_ (target=0x0, source=0x40636900) at ../../../gcc/libjava/java/lang/Class.h:184
184 {
(gdb) bt
#0 _Z20_Jv_IsAssignableFromPN4java4lang5ClassES2_ (target=0x0, source=0x40636900) at ../../../gcc/libjava/java/lang/Class.h:184
#1 0x40454de0 in _Jv_IsInstanceOf (obj=0x8064fe0, cl=0x0) at ../../../gcc/libjava/java/lang/natClass.cc:994
#2 0x4044290a in __gcj_personality_v0 (version=1, actions=1, exception_class=5138137972373280321, ue_header=0x807dde8, context=0x41ac269c)
 at ../../../gcc/libjava/exception.cc:337
#3 0x402ce66d in _Unwind_RaiseException (exc=0x807dde8) at ../../gcc/gcc/unwind.inc:1042
#4 0x40442152 in _Jv_Throw (value=0x8064fe0) at ../../../gcc/libjava/exception.cc:93
#5 0x4043680a in _Jv_ThrowSignal () at ../../../gcc/libjava/prims.cc:116
#6 0x40436836 in _Z10catch_segvi () at ../../../gcc/libjava/prims.cc:125
#7 <signal handler called>
#8 0x40454c08 in _Z20_Jv_IsAssignableFromPN4java4lang5ClassES2_ (target=0x0, source=0x4027ddc0) at ../../../gcc/libjava/java/lang/Class.h:184
.......
If you'd like any further info let me know.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /