Bug 39963
Summary: | dlopen() calls seem to crash program that worked on RH7.0 | ||
---|---|---|---|
Product: | [Retired] Red Hat Linux | Reporter: | Erik J Burckart <ejburcka> |
Component: | glibc | Assignee: | Jakub Jelinek <jakub> |
Status: | CLOSED NOTABUG | QA Contact: | Aaron Brown <abrown> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 7.1 | CC: | fweimer, jakub |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | i686 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2001-05-10 13:13:21 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: |
Description
Erik J Burckart
2001-05-09 21:02:00 UTC
I forgot to mention... in my queries the things I found that were similiar were #39803 (although that was with dlsym) and #25029 (although we do compile our binary with -lpthread as well as our library.) Can you try export LD_ASSUME_KERNEL=2.2.5; before running your application? If the program clobbers %gs register, this would be expected behaviour. That works. Thanks for your help. Ok, can you investigate? Does the program/binary ever touch %gs (either source or objdump -dr could reveal this)? If yes, then it should be fixed (%gs is a system register for -lpthread), if not, then we need to investigate this further. I am investigating and will let you know what I find. Thanks again for your help. I did an `objdump -dr <bin or lib name> |grep "%gs"` for each of my binaries and libraries in the product and didn't find anything. I checked the source and found no references to it either. What else can I do to help? If you could send me the program/library, it would be probably easiest, if you cannot do that, then e.g. ltrace and strace dumps might tell something, perhaps with short disassembly where it exactly died (something like disas $pc $pc+64 in gdb, plus info reg). Oops, forgot to close this. The end of mail exchange was I believe: The issue is that ibmproxy binary does its own modify_ldt syscall in modify_ldt function called from ldt_init: ... 9749 modify_ldt(0x1, 0xbffffa34, 0x10) = 0 ... 9750 modify_ldt(0x11, 0xbffffa08, 0x10) = 0 ... The first one above is from glibc, the second is from ibmproxy. I guess they clash, since it dies soon after that call. I don't know what do you need ia32 segments in linux application for (modify_ldt is there primarily to support DOSemu and Wine I think). In case you really need it, you'd better of starting allocating them from the end (ie. 8191, 8190, ...) because -lpthread uses them from the first one up (currently up to 1023, but there is no guarantee this will not change in the future glibc versions, so be prepared). |