OK, EAX contains -1, but now I need to find out how such code can be located inside Pike binary.
(gdb) info all-reg eax 0xf7c68bde -137983010 ecx 0x40212128 1075913000 edx 0x8397428 137983016 ebx 0x8356054 137715796 esp 0xbffff8d8 0xbffff8d8 ebp 0xbffff8e8 0xbffff8e8 esi 0x2 2 edi 0xbffffa84 -1073743228 eip 0x83b6fe5 0x83b6fe5 eflags 0x10297 66199 cs 0x23 35 ss 0x2b 43 ds 0x2b 43 es 0x2b 43 fs 0x0 0 gs 0x7 7 st0 0 (raw 0x00000000000000000000) st1 0 (raw 0x00000000000000000000) st2 0 (raw 0x00000000000000000000) st3 0 (raw 0x00000000000000000000) st4 0 (raw 0x00000000000000000000) st5 0 (raw 0x00000000000000000000) st6 1 (raw 0x3fff8000000000000000) ---Type <return> to continue, or q <return> to quit--- st7 0 (raw 0x00000000000000000000) fctrl 0x37f 895 fstat 0x4000 16384 ftag 0xffff 65535 fiseg 0x23 35 fioff 0x80dada8 135114152 foseg 0x2b 43 fooff 0xbfffebb0 -1073747024 fop 0x55d 1373 xmm0 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}} xmm1 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}} xmm2 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}} xmm3 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}} xmm4 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}} xmm5 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}} xmm6 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}} xmm7 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}} mxcsr 0x0 0 orig_eax 0xffffffff -1 (gdb)
/ Honza (hop) Petrous
Previous text:
2002-10-08 18:13: Subject: more debug?
All the assembly before the offending instruction is useless, because it doesn't align with the start of the instructions properly (remember that IA32 instructions are variable length, so you can get any amount of crap disassembly from starting at a random address).
0x83b6fe5: add %dl,(%eax)
is the instruction causing the SEGV, so %eax contains an invalid address (info regs will reveal which one).
/ Marcus Comstedt (ACROSS) (Hail Ilpalazzo!)