Bug 246591
| Summary: | Freshly compiled java program crashes with "Incorrect library ABI version detected." | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Matěj Cepl <mcepl> | ||||||
| Component: | gcc | Assignee: | Jakub Jelinek <jakub> | ||||||
| Status: | CLOSED NOTABUG | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||||
| Severity: | low | Docs Contact: | |||||||
| Priority: | low | ||||||||
| Version: | 7 | CC: | aph, mcepl | ||||||
| Target Milestone: | --- | ||||||||
| Target Release: | --- | ||||||||
| Hardware: | x86_64 | ||||||||
| OS: | Linux | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||||
| Doc Text: | Story Points: | --- | |||||||
| Clone Of: | Environment: | ||||||||
| Last Closed: | 2007-07-03 13:02:16 UTC | Type: | --- | ||||||
| Regression: | --- | Mount Type: | --- | ||||||
| Documentation: | --- | CRM: | |||||||
| Verified Versions: | Category: | --- | |||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||
| Embargoed: | |||||||||
| Bug Depends On: | |||||||||
| Bug Blocks: | 230282 | ||||||||
| Attachments: |
|
||||||||
|
Description
Matěj Cepl
2007-07-03 09:43:26 UTC
Created attachment 158415 [details]
testing src.rpm
Created attachment 158422 [details]
stdout/stderr of the rpmbuild process
First of all, this is built without -findirect-dispatch, plus it redefines some classes defined libgcj.so.8rh (e.g. org.relaxng.datatype.*). I believe redefinition of system classes is only possible with BC-ABI. The above error is because next_or_version field is shared for version value (before the class is registered) and for a chain pointer after it is registered. But as the binary redefines say _ZN3org7relaxng8datatype7helpers21DatatypeLibraryLoader6class$E the same class is referenced in .jcr section of libgcj.so.8rh and in .jcr section of the binary (why aren't .jcr relocations always to hidden aliases and therefore always bind to the same shared library?). That means the same class is initialized twice. The "old" ABI (i.e. compiling without -findirect-dispatch) requires symbols to be unique in the context of an executable. Redefining classes in an application is a bug in the application. This is not a crash: libgcj detected a problem with the application and shut down. Thanks. I'd suggest then to build this with -findirect-dispatch and additionally nuke classes that are already in libgcj, unless the overriding is intentional (I guess it is just because the codebase is extremely old). |