Debugging libgcj on cygwin

Thomas Pfaff tpfaff@gmx.net
Mon Jun 23 14:07:00 GMT 2003


Hi all,
i try to create gcj on cygwin. Gcc is gcc 3.3 with a cygwin-mingw 
specific patch from Danny Smith and configured with
../gcc-3.3/configure --prefix=/usr/gcc-3.3 --enable-sjlj-exceptions 
--disable-shared --enable-threads=posix --enable-languages=c,c++,java 
--enable-libgcj --disable-nls --target=i686-cygwin --host=i686-cygwin 
--with-gcc --with-gnu-ld --with-gnu-as --disable-win32-registry 
--without-included-gettext --with-system-zlib 
--disable-version-specific-runtime-libs --enable-haifa --enable-interpreter
Building gcj went fine, running the testsuite however results in 
segmentation faults on every compiled app. The backtrace is always the 
same for any app:
Program received signal SIGSEGV, Segmentation fault.
_Jv_InterpMethod::run(void*, ffi_raw*) (this=0x1014be60, retp=0x22f730, 
args=0x22f750) at ../../../gcc-3.3/libjava/include/java-interp.h:230
230 next = *n;
which is located at java-interp.h:230
 _Jv_MethodChain (const _Jv_InterpMethod *s, _Jv_MethodChain **n)
 {
 self = s;
 ptr = n;
 next = *n;
 *n = this;
 }
(gdb) i lo
this = (_Jv_MethodChain * const) 0x22f6f0
n = (_Jv_MethodChain **) 0x20
thread = (struct Thread *) 0x0
frame_desc = {self = 0x1, ptr = 0x20, next = 0x22f768}
stack = (_Jv_word (*)[0]) 0x10102000
sp = (_Jv_word *) 0x10102000
locals = (_Jv_word (*)[0]) 0x0
pool_data = (_Jv_word *) 0x22f6e0
fun = (void (*)(void)) 0x20
rmeth = (_Jv_ResolvedMethod *) 0x0
tmpval = 32
insn_target = {0x449a12, 0x449a2c, 0x44e283, 0x44e254, 0x44e225, 
0x44e1f6, 0x44e1c7, 0x44e198, 0x44e169, 0x44e131, 0x44e0f9, 0x44e0c9, 
0x44e099, 0x44e069, 0x44e031, 0x44dff9, 0x44dff7, 0x44dfc7, 0x44dfc5, 
0x44df95, 0x44df5d, 0x44df24, 0x44dee2, 0x44dea9, 0x44de67, 0x44de2e, 
0x44ddfb, 0x44ddc7, 0x44dd93, 0x44dd5f, 0x44dd24, 0x44dce8, 0x44dcac, 
0x44dc70, 0x44dc3d, 0x44dc09, 0x44dbd5, 0x44dba1, 0x44db66, 0x44db2a, 
0x44daee, 0x44dab2, 0x44da7f, 0x44da4b, 0x44da17, 0x44d9e3, 0x44d98a, 
0x44d926, 0x44d8cd, 0x44d859, 0x44d800, 0x44d7a3, 0x44d746, 0x44d6eb, 
0x44d6b4, 0x44d66e, 0x44d637, 0x44d5e5, 0x44d5ae, 0x44d57d, 0x44d54b, 
0x44d519, 0x44d4e7, 0x44d4a8, 0x44d468, 0x44d428, 0x44d3e8, 0x44d3b7, 
0x44d385, 0x44d353, 0x44d321, 0x44d2e2, 0x44d2a2, 0x44d262, 0x44d222, 
0x44d1f1, 0x44d1bf, 0x44d18d, 0x44d15b, 0x44d10c, 0x44d094, 0x44d037, 
0x44cfcb, 0x44cf38, 0x44cee8, 0x44ce8c, 0x44ce30, 0x44ce0f, 0x44cdee, 
0x44cdc0, 0x44cd49, 0x44ccd2, 0x44cc9e, 0x44cc1e, 0x44cb9e, 0x44cb60, 
0x44cb25, 0x44caad, 0x44ca68, 0x44c9d0, 0x44c995, 0x44c91d, 0x44c8d8, 
0x44c840, 0x44c804, 0x44c76c, 0x44c727, 0x44c69d, 0x44c658, 0x44c5c0, 
0x44c575, 0x44c4f4, 0x44c4a3, 0x44c417, 0x44c3ba, 0x44c32d, 0x44c2f7, 
0x44c290, 0x44c251, 0x44c1e3, 0x44c199, 0x44c12b, 0x44c0e1, 0x44c072, 
0x44c028, 0x44bfba, 0x44bf7f, 0x44bf09, 0x44bec6, 0x44be50, 0x44be0d, 
0x44bd97, 0x44bd59, 0x44bd1f, 0x44bcde, 0x44bc95, 0x44bc5c, 0x44bc0b, 
0x44bbb2, 0x44baf1, 0x44ba20, 0x44b9da, 0x44b8f8, 0x44b800, 0x44b7a9, 
0x44b771, 0x44b739, 0x44b703, 0x44b650, 0x44b646, 0x44b5b8, 0x44b5ae, 
0x44b4f2, 0x44b4ac, 0x44b466, 0x44b427, 0x44b3e1, 0x44b39b, 0x44b35c, 
0x44b312, 0x44b2c1, 0x44b270, 0x44b21f, 0x44b1ce, 0x44b17d, 0x44b133, 
0x44b0e2, 0x44a501, 0x44a4c9, 0x44b0b5, 0x44b050, 0x44af9a, 0x44af80, 
0x44af42, 0x44af28, 0x44aef6, 0x44aedf, 0x44aeb7, 0x44ae26, 0x44ad89, 
0x44acd6, 0x44ac32, 0x44ab5f, 0x44aac1, 0x44aa41, 0x44a9c3, 0x0, 
0x44a936, 0x44a8f1, 0x44a84a, 0x44a813, 0x44a7fb, 0x44a752, 0x44a6cd, 
0x44a69c, 0x44a66b, 0x0, 0x44a5a2, 0x44a563, 0x44a51d...}
pc = 0x10152df0
(gdb) p *this
2ドル = {self = 0x1, ptr = 0x20, next = 0x22f768}
(gdb) bt
#0 _Jv_InterpMethod::run(void*, ffi_raw*) (this=0x1014be60, 
retp=0x22f730, args=0x22f750) at 
../../../gcc-3.3/libjava/include/java-interp.h:230
#1 0x0022f698 in ?? ()
#2 0x00461e7a in ffi_closure_raw_SYSV (closure=0x0) at 
../../../gcc-3.3/libffi/src/x86/ffi.c:379
#3 0x0040e219 in java::lang::Class::newInstance() (this=0x10148e80) at 
../../../gcc-3.3/libjava/java/lang/natClass.cc:719
#4 0x00463973 in 
gnu.gcj.convert.UnicodeToBytes.getEncoder(java.lang.String) 
(encoding=0x10130c60) at 
../../../gcc-3.3/libjava/gnu/gcj/convert/UnicodeToBytes.java:96
#5 0x004635b0 in gnu.gcj.convert.UnicodeToBytes.getDefaultEncoder() () 
at ../../../gcc-3.3/libjava/gnu/gcj/convert/UnicodeToBytes.java:62
#6 0x0043635e in java.io.PrintStream.PrintStream(java.io.OutputStream, 
boolean) (this=0x10130c80, out=0x10144678, af=269684225) at 
../../../gcc-3.3/libjava/java/io/PrintStream.java:241
#7 0x0040661c in java.lang.System.<clinit>() () at 
../../../gcc-3.3/libjava/java/lang/System.java:135
#8 0x0040e47d in java::lang::Class::initializeClass() (this=0x54dc10) 
at ../../../gcc-3.3/libjava/java/lang/natClass.cc:814
#9 0x00406008 in java.lang.System.getProperty(java.lang.String) 
(key=0x10131f00) at ../../../gcc-3.3/libjava/java/lang/System.java:393
#10 0x004154e3 in java.lang.Throwable.<clinit>() () at 
../../../gcc-3.3/libjava/java/lang/Throwable.java:403
#11 0x0040e47d in java::lang::Class::initializeClass() (this=0x550250) 
at ../../../gcc-3.3/libjava/java/lang/natClass.cc:814
#12 0x0040e4d0 in java::lang::Class::initializeClass() (this=0x54dd70) 
at ../../../gcc-3.3/libjava/java/lang/Class.h:265
#13 0x0040e4d0 in java::lang::Class::initializeClass() (this=0x557a10) 
at ../../../gcc-3.3/libjava/java/lang/Class.h:265
#14 0x0040e4d0 in java::lang::Class::initializeClass() (this=0x54eff0) 
at ../../../gcc-3.3/libjava/java/lang/Class.h:265
#15 0x00402a93 in _Jv_AllocObjectNoFinalizer (klass=0x54eff0, size=24) 
at ../../../gcc-3.3/libjava/java/lang/Class.h:265
#16 0x00402abe in _Jv_AllocObject (klass=0x54eff0, size=24) at 
../../../gcc-3.3/libjava/prims.cc:415
#17 0x00403a10 in _Jv_CreateJavaVM(void*) () at 
../../../gcc-3.3/libjava/prims.cc:921
#18 0x00403c52 in _Jv_RunMain(java::lang::Class*, char const*, int, char 
const**, bool) (klass=0x54d0b0, name=0x0, argc=1, argv=0x101023f8, 
is_jar=false) at ../../../gcc-3.3/libjava/prims.cc:973
#19 0x00403e1f in JvRunMain (klass=0x54d0b0, argc=1, argv=0x101023f8) at 
../../../gcc-3.3/libjava/prims.cc:1011
#20 0x0040108c in main (argc=1, argv=0x101023f8) at 
/c/DOKUME~1/pfaff/LOKALE~1/Temp/ccIEfgxx.i:11
It seems that n does not contain a valid address.
This happens only if the app is running from a different directory 
(testsuite/Final.exe for example), if it is called from the same 
directory (./Final.exe) it works.
 I am not able to dig any deeper since libgcj is built with -O2. 
Setting --enable-debug-libgcj did not help, building with
make GCJFLAGS=-'O0 -g' CFLAGS='-O0 -g' CXXFLAGS='-O0 -g' LDFLAGS='-g'
failed with
/usr/src/gcc-3/BUILD/gcc/gcj -B/usr/src/gcc-3/BUILD/i686-cygwin/libjava/ 
-B/usr/src/gcc-3/BUILD/gcc/ -ffloat-store -O0 -g -g -o jv-convert.exe 
--main=gnu.gcj.convert.Convert -shared-libgcc 
-L/usr/src/gcc-3/BUILD/i686-cygwin/libjava 
-L/usr/src/gcc-3/BUILD/i686-cygwin/libjava/.libs ./.libs/libgcj.a 
-L/usr/src/gcc-3/BUILD/i686-cygwin/libstdc++-v3/src 
-L/usr/src/gcc-3/BUILD/i686-cygwin/libstdc++-v3/src/.libs -lz 
-L/usr/src/gcc-3/BUILD/gcc -L/usr/gcc-3.3/i686-cygwin/bin 
-L/usr/gcc-3.3/i686-cygwin/lib 
-L/usr/gcc-3.3/lib/gcc-lib/i686-cygwin/3.3 
-L/usr/gcc-3.3/lib/gcc-lib/i686-cygwin/3.3/../../../../i686-cygwin/lib 
-L/usr/gcc-3.3/lib/gcc-lib/i686-cygwin/3.3/../../.. -lgcc -lcygwin 
-luser32 -lkernel32 -ladvapi32 -lshell32 -lgcc -Wl,--rpath 
-Wl,/usr/gcc-3.3/lib/.
./.libs/libgcj.a(String.o)(.text+0x66c): In function 
`_ZN4java4lang6String6lengthEv':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/String.java:193: 
multiple definition of `java::lang::String::length()'
./.libs/libgcj.a(prims.o)(.text$_ZN4java4lang6String6lengthEv+0x0):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/array.h: 
first defined here
./.libs/libgcj.a(natThread.o)(.text$_ZN4java4lang11ThreadGroup7getNameEv+0x0): 
In function `_ZN13JvSynchronizeC1ERKPN4java4lang6ObjectE':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/cni.h: 
multiple definition of `java::lang::ThreadGroup::getName()'
./.libs/libgcj.a(ThreadGroup.o)(.text+0x258):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/ThreadGroup.java:142: 
first defined here
./.libs/libgcj.a(natThread.o)(.text$_ZN4java4lang11ThreadGroup14getMaxPriorityEv+0x0): 
In function `_ZN13JvSynchronizeC1ERKPN4java4lang6ObjectE':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/cni.h: 
multiple definition of `java::lang::ThreadGroup::getMaxPriority()'
./.libs/libgcj.a(ThreadGroup.o)(.text+0x29a):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/ThreadGroup.java:167: 
first defined here
./.libs/libgcj.a(Thread.o)(.text+0xe8): In function 
`_ZN4java4lang6Thread7getNameEv':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/Thread.java:61: 
multiple definition of `java::lang::Thread::getName()'
./.libs/libgcj.a(natThread.o)(.text$_ZN4java4lang6Thread7getNameEv+0x0):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/cni.h: 
first defined here
./.libs/libgcj.a(Thread.o)(.text+0xf4): In function 
`_ZN4java4lang6Thread11getPriorityEv':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/Thread.java:66: 
multiple definition of `java::lang::Thread::getPriority()'
./.libs/libgcj.a(posix-threads.o)(.text$_ZN4java4lang6Thread11getPriorityEv+0x0):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/cni.h: 
first defined here
./.libs/libgcj.a(Thread.o)(.text+0x100): In function 
`_ZN4java4lang6Thread14getThreadGroupEv':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/Thread.java:71: 
multiple definition of `java::lang::Thread::getThreadGroup()'
./.libs/libgcj.a(natThread.o)(.text$_ZN4java4lang6Thread14getThreadGroupEv+0x0):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/cni.h: 
first defined here
./.libs/libgcj.a(Thread.o)(.text+0x152): In function 
`_ZN4java4lang6Thread7isAliveEv':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/Thread.java:90: 
multiple definition of `java::lang::Thread::isAlive()'
./.libs/libgcj.a(natThread.o)(.text$_ZN4java4lang6Thread7isAliveEv+0x0):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/cni.h: 
first defined here
./.libs/libgcj.a(Thread.o)(.text+0x15e): In function 
`_ZN4java4lang6Thread8isDaemonEv':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/Thread.java:95: 
multiple definition of `java::lang::Thread::isDaemon()'
./.libs/libgcj.a(posix-threads.o)(.text$_ZN4java4lang6Thread8isDaemonEv+0x0):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/cni.h: 
first defined here
./.libs/libgcj.a(natMethod.o)(.text$_ZN4java4lang7Boolean12booleanValueEv+0x0): 
In function `_Z8elementsIPN4java4lang5ClassEEPT_P6JArrayIS4_E':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/array.h: 
multiple definition of `java::lang::Boolean::booleanValue()'
./.libs/libgcj.a(Boolean.o)(.text+0x66):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/Boolean.java:126: 
first defined here
./.libs/libgcj.a(Character.o)(.text+0x21f2): In function 
`_ZN4java4lang9Character9charValueEv':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/Character.java:1444: 
multiple definition of `java::lang::Character::charValue()'
./.libs/libgcj.a(natMethod.o)(.text$_ZN4java4lang9Character9charValueEv+0x0):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/array.h: 
first defined here
./.libs/libgcj.a(natVMSecurityManager.o)(.text$_ZN3gnu3gcj7runtime10StackTrace6lengthEv+0x0): 
In function `_ZN3gnu3gcj7runtime10StackTrace6lengthEv':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/gnu/gcj/runtime/StackTrace.h:33: 
multiple definition of `gnu::gcj::runtime::StackTrace::length()'
./.libs/libgcj.a(StackTrace.o)(.text+0x76):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gnu/gcj/runtime/StackTrace.java:138: 
first defined here
./.libs/libgcj.a(natField.o)(.text$_ZN4java4lang7reflect5Field17getDeclaringClassEv+0x0): 
In function `_Jv_InitClass':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/Class.h: 
multiple definition of `java::lang::reflect::Field::getDeclaringClass()'
./.libs/libgcj.a(Field.o)(.text+0x8a):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/lang/reflect/Field.java:50: 
first defined here
./.libs/libgcj.a(Locale.o)(.text+0x14aa): In function 
`_ZN4java4util6Locale11getLanguageEv':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/util/Locale.java:386: 
multiple definition of `java::util::Locale::getLanguage()'
./.libs/libgcj.a(natString.o)(.text$_ZN4java4util6Locale11getLanguageEv+0x0):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/gcj/cni.h: 
first defined here
./.libs/libgcj.a(natPlainSocketImpl.o)(.text$_ZN4java3net17InetSocketAddress7getPortEv+0x0): 
In function `_Z8elementsIcEPT_P6JArrayIS0_E':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/java/lang/Boolean.h: multiple 
definition of `java::net::InetSocketAddress::getPort()'
./.libs/libgcj.a(InetSocketAddress.o)(.text+0x374):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/net/InetSocketAddress.java:173: 
first defined here
./.libs/libgcj.a(natPlainSocketImpl.o)(.text$_ZN4java3net17InetSocketAddress10getAddressEv+0x0): 
In function `_Z8elementsIcEPT_P6JArrayIS0_E':
/usr/src/gcc-3/BUILD/i686-cygwin/libjava/java/lang/Boolean.h: multiple 
definition of `java::net::InetSocketAddress::getAddress()'
./.libs/libgcj.a(InetSocketAddress.o)(.text+0x35c):/usr/src/gcc-3/BUILD/i686-cygwin/libjava/../../../gcc-3.3/libjava/java/net/InetSocketAddress.java:157: 
first defined here
collect2: ld returned 1 exit status
make[2]: *** [jv-convert.exe] Error 1
Is there any way to build libgcj with -O0 ?
TIA,
Thomas


More information about the Java mailing list

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