Summary: | seg fault in _Jv_Linker | ||
---|---|---|---|
Product: | gcc | Reporter: | Reid Spencer <rspencer> |
Component: | libgcj | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | gcc-bugs, java-prs, pinskia |
Priority: | P2 | ||
Version: | 4.0.0 | ||
Target Milestone: | 4.0.3 | ||
Host: | i686-pc-linux-gnu | Target: | i686-pc-linux-gnu |
Build: | i686-pc-linux-gnu | Known to work: | |
Known to fail: | Last reconfirmed: | ||
Bug Depends on: | |||
Bug Blocks: | 24251 |
Description
Reid Spencer
2005-05-02 03:19:37 UTC
I didn't download the source to try this out. But based on the stack trace, I think the problem is probably that a class compiled with the C++ ABI is referring to an org.xml class. This doesn't work, as these classes are compiled with the BC ABI (i.e., -findirect-dispatch). This is unfortunate, but necessary to support java.endorsed.dirs. The restriction that a C++ ABI class can't directly refer to a BC ABI class is unlikely to be lifted. The fix is to compile your program with -findirect-dispatch. (But note that at the moment this only works when compiling from .class) I don't see how that is possible on the application side as the source code is 100% Java and it is all compiled with the same options (there's only one compilation command that compiles all sources). Perhaps you are suggesting that libgcj is compiled differently from the application? If so, shouldn't the default compilation flags automatically work correctly with libgcj? The only flags given are "-g -02". So, I tried your suggestion. I compiled JING with HotSpot 1.4.2. It compiled fine to .class files via javac 1.4.2. I compiled the .class files (one command line again) with GCJ using the -findirect-dispatch option. GCJ gave hundreds of errors. Most of the errors were about "finalized field 'xyz' may not have been initialized". That sounds more like a warning to me, but I wouldn't know. I take it that GCJ doesn't like foreign compiled .class files? I'm not sure where to go from here except to give up on GCJ. Any other suggestions? One other note. Shouldn't the segfault in _Jv_Linker be fixed anyway? Dereferencing a point of value 0x01 isn't likely to be valid in any circumstances? Okay, after fixing some makefile bugs, the workaround suggested by Tom worked. Feel free to close this now unless you want to track down the SIGSEGV. Reid I think this a dup of bug 24251 which was just fixed on the mainline, if you want to try again, that would be nice. Fixed. |