Opened 13 years ago
Last modified 13 years ago
#255 closed defect
libc064 gives SIGSEGV when closing some processes due to being linked with IBM linker not wlink — at Initial Version
Reported by: | psmedley | Owned by: | bird |
---|---|---|---|
Priority: | highest | Milestone: | libc-0.6.5 |
Component: | libc | Version: | 0.6.4 |
Severity: | critical | Keywords: | |
Cc: | Steven Levine, dryeo |
Description
Many applications I've built (httpd, lyx, postgres to name 3) are giving the following SIGSEGV when the application either closes, or attempts to close: Killed by SIGSEGV pid=0xb3db ppid=0xb3d5 tid=0x0001 slot=0x00a2 pri=0x0200 mc=0x0001 E:\PGSQL\BIN\POSTGRES.EXE LIBC064 0:000f0242 cs:eip=005b:1f600242 ss:esp=d62f:00417992 ebp=004179e8
ds=d62f es=d62f fs=150b gs=0000 efl=00010206
eax=0000d62f ebx=004179c0 ecx=00417e9c edx=0000150b edi=00417c9c esi=00000000
Registers differ, but the address (LIBC064 0:000f0242) is always the same.
Steven Levine's observations are below: I have to suspect a libc064 link error. I loaded libc064 into memory and took a look with Theseus and this is what it has to say.
1C560220 (0020)8C D2 *..* mov edx,ss 1C560222 (0022)81 E2 F8 FF 00 00 *......* and edx,FFF8 1C560228 (0028)C1 E2 0D *...* shl/sal edx,0D 1C56022B (002B)66 8B D4 *f..* O16:mov dx,sp 1C56022E (002E)B8 2F 9D 00 00 *./...* mov eax,9D2F 1C560233 (0033)8E D0 *..* mov ss,ax 1C560235 (0035)8B E2 *..* mov esp,edx 1C560237 (0037)8E D8 *..* mov ds,ax 1C560239 (0039)8E C0 *..* mov es,ax 1C56023B (003B)BA 0B 15 00 00 *.....* mov edx,150B 1C560240 (0040)8E E2 *..* mov fs,dx 1C560242 (0042)0F B7 44 24 22 *..D$"* movzx eax,[esp+22]
This is the same code that traps for you, but loaded at the location where libc064 happens to load on my system. The mov at 1c56022e is hosed.
Well I've seen the exact same crash location from a bunch of different binaries now
I saw the messages. The seg:offset is the same, but the segment register contents differ and I can guess why.
so either GCC is doing something funky (I'll rebuild postgresql with 3.3.5
I recommend you rebuild with libc063. Best I can tell it does not share the defect. Unfortunately, I cannot view the code in libc063 with Theseus. The pages that contain the code in question are not available.
or something is screwed up with libc064.
This is my best guess at the moment.
BTW, Knut linked libc063 with wlink and libc064 with the IBM linker, so we may be dealing with a linker defect.
the btw looks to be correct, as I built libc-0.6 from svn using wlink, and rebuilt postgresql against libc064x and I can now close postgres without the SIGSEGV