[patch] Fix oddity in personality routine

Jack Howarth howarth@bromo.med.uc.edu
Tue Dec 1 05:02:00 GMT 2009


Andrew,
    I have uploaded a bz2 archive of the walk from the
last _Unwind_RaiseException breakpoint before the crash
up to the crash to PR41991. The crash appears at...

_Jv_GetMethodLocal (klass=0x104a298c0, name=0x104af13a0, signature=0x104b1dfe0) at ../../../gcc-4.5-20091128/libjava/java/lang/natClass.cc:1633
1633		  && _Jv_equalUtf8Consts (signature, klass->methods[i].signature))
(gdb) 
_Jv_equalUtf8Consts (a=0x104b1dfe0, b=0x1048262c0) at ../../../gcc-4.5-20091128/libjava/prims.cc:209
209	  if (a == b)
(gdb) 
210	    return true;
(gdb) 
209	  if (a == b)
(gdb) 
211	  if (a->hash != b->hash)
(gdb) 
212	    return false;
(gdb) 
211	  if (a->hash != b->hash)
(gdb) 
214	  if (b->length != len)
(gdb) 
218	  len = (len + 1) >> 1;
(gdb) 
216	  aptr = (const _Jv_ushort *)a->data;
(gdb) 
217	  bptr = (const _Jv_ushort *)b->data;
(gdb) 
218	  len = (len + 1) >> 1;
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
220	    if (*aptr++ != *bptr++)
(gdb) 
219	  while (--len >= 0)
(gdb) 
222	  return true;
(gdb) 
223	}
(gdb) 
_Jv_GetMethodLocal (klass=0x104a298c0, name=0x104af13a0, signature=0x104b1dfe0) at ../../../gcc-4.5-20091128/libjava/java/lang/natClass.cc:1632
1632	      if (_Jv_equalUtf8Consts (name, klass->methods[i].name)
(gdb) 
1634		return &klass->methods[i];
(gdb) 
1637	}
(gdb) 
_Jv_LookupDeclaredMethod (klass=0x104a298c0, name=0x104af13a0, signature=0x104b1dfe0, declarer_result=0x0) at ../../../gcc-4.5-20091128/libjava/java/lang/natClass.cc:1648
1648	      if (meth)
(gdb) 
1650		  if (declarer_result)
(gdb) 
1657	}
(gdb) 
gnu::java::lang::MainThread::call_main (this=0x104875dc0) at ../../../gcc-4.5-20091128/libjava/gnu/java/lang/natMainThread.cc:41
41	  if (meth == NULL)
(gdb) 
37						       main_signature);
(gdb) 
41	  if (meth == NULL)
(gdb) 
43	  else if (! ::java::lang::reflect::Modifier::isStatic(meth->accflags))
(gdb) 
_ZN4java4lang7reflect8Modifier8isStaticEJbi (mod=9) at Modifier.java:268
268	    return (mod & STATIC) != 0;
(gdb) 
_ZN4java4lang7reflect8Modifier8isStaticEJbi (mod=9) at Modifier.java:268
268	    return (mod & STATIC) != 0;
(gdb) 
0x0000000100994af0 in dyld_stub__Jv_InitClass () at RowSetEvent.java:51
51	RowSetEvent.java: No such file or directory.
	in RowSetEvent.java
(gdb) 
_Jv_InitClass (klass=0x10168ce40) at Class.h:740
740	  if (__builtin_expect (klass->state == JV_STATE_DONE, true))
(gdb) 
743	}
(gdb) 
0x00000001004168bf in _ZN4java4lang7reflect8Modifier8isStaticEJbi (mod=9) at Modifier.java:268
268	    return (mod & STATIC) != 0;
(gdb) 
gnu::java::lang::MainThread::call_main (this=0x104875dc0) at ../../../gcc-4.5-20091128/libjava/gnu/java/lang/natMainThread.cc:44
44	    msg = "`main' must be static";
(gdb) 
43	  else if (! ::java::lang::reflect::Modifier::isStatic(meth->accflags))
(gdb) 
45	  else if (! ::java::lang::reflect::Modifier::isPublic(meth->accflags))
(gdb) 
_ZN4java4lang7reflect8Modifier8isPublicEJbi (mod=9) at Modifier.java:258
258	    return (mod & PUBLIC) != 0;
(gdb) 
_ZN4java4lang7reflect8Modifier8isPublicEJbi (mod=9) at Modifier.java:258
258	    return (mod & PUBLIC) != 0;
(gdb) 
0x0000000100994af0 in dyld_stub__Jv_InitClass () at RowSetEvent.java:51
51	RowSetEvent.java: No such file or directory.
	in RowSetEvent.java
(gdb) 
_Jv_InitClass (klass=0x10168ce40) at Class.h:740
740	  if (__builtin_expect (klass->state == JV_STATE_DONE, true))
(gdb) 
743	}
(gdb) 
0x00000001004168df in _ZN4java4lang7reflect8Modifier8isPublicEJbi (mod=9) at Modifier.java:258
258	    return (mod & PUBLIC) != 0;
(gdb) 
gnu::java::lang::MainThread::call_main (this=0x104875dc0) at ../../../gcc-4.5-20091128/libjava/gnu/java/lang/natMainThread.cc:46
46	    msg =  "`main' must be public";
(gdb) 
45	  else if (! ::java::lang::reflect::Modifier::isPublic(meth->accflags))
(gdb) 
54	  (*real_main) (args);
(gdb) 

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x0000000103f05db0
0x0000000103f05db0 in ?? () at RowSetEvent.java:51
51	RowSetEvent.java: No such file or directory.
	in RowSetEvent.java
(gdb) 

A backtrace only shows...

(gdb) bt
#0  0x0000000103f05db0 in ?? () at RowSetEvent.java:51
#1  0x00000001000485be in gnu::java::lang::MainThread::call_main (this=0x104875dc0) at ../../../gcc-4.5-20091128/libjava/gnu/java/lang/natMainThread.cc:54
Previous frame inner to this frame (gdb could not unwind past this frame)

Let me know if you have any suggestions for debugging this further.
                      Jack



More information about the Java mailing list