Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re^2: Perl threads sort test program crashes (UPDATED: CAN reproduce win32/5.8.4)

by BrowserUk (Pope)
on Jun 16, 2004 at 12:18 UTC ( #367194=note: print w/replies, xml ) Need Help??

in reply to Re: Perl threads sort test program crashes (UPDATED: CAN reproduce win32/5.8.4)
in thread Perl threads sort test program crashes

Here's the disassembly of the segfault.

Disassembly of Function perl58.dll!sortcv (0x2807A60E) ;******************************************************************* +************* SYM:sortcv <Long> ; pp_sort.c - Line 1634 ; ; static I32 ; sortcv(pTHX_ SV *a, SV *b) ; { 0x2807A60E: PUSH EBP 0x2807A60F: MOV EBP,ESP 0x2807A611: SUB ESP,0x10 ; pp_sort.c - Line 1635 ; I32 oldsaveix = PL_savestack_ix; 0x2807A614: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A617: MOV EAX,DWORD PTR [EAX+0x24] 0x2807A61A: MOV DWORD PTR [EBP-0x8],EAX ; VAR:oldsav +eix <Long> ; pp_sort.c - Line 1636 ; I32 oldscopeix = PL_scopestack_ix; 0x2807A61D: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A620: MOV EAX,DWORD PTR [EAX+0x18] 0x2807A623: MOV DWORD PTR [EBP-0x4],EAX ; VAR:oldsco +peix <Long> ; pp_sort.c - Line 1638 ; I32 result; ; GvSV(PL_firstgv) = a; 0x2807A626: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A629: MOV EAX,DWORD PTR [EAX+0x1A4] > 0x2807A62F: MOV EAX,DWORD PTR [EAX] ; !!SEGFAULT (trap 5) OCCU +RS HERE!! 0x2807A631: MOV EAX,DWORD PTR [EAX+0x20] 0x2807A634: MOV ECX,DWORD PTR [EBP+0xC] ; ARG:a <sv +*> 0x2807A637: MOV DWORD PTR [EAX],ECX ; pp_sort.c - Line 1639 ; GvSV(PL_secondgv) = b; 0x2807A639: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A63C: MOV EAX,DWORD PTR [EAX+0x1A8] 0x2807A642: MOV EAX,DWORD PTR [EAX] 0x2807A644: MOV EAX,DWORD PTR [EAX+0x20] 0x2807A647: MOV ECX,DWORD PTR [EBP+0x10] ; ARG:b <sv +*> 0x2807A64A: MOV DWORD PTR [EAX],ECX ; pp_sort.c - Line 1640 ; PL_stack_sp = PL_stack_base; 0x2807A64C: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A64F: MOV ECX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A652: MOV ECX,DWORD PTR [ECX+0xC] 0x2807A655: MOV DWORD PTR [EAX],ECX ; pp_sort.c - Line 1641 ; PL_op = PL_sortcop; 0x2807A657: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A65A: MOV ECX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A65D: MOV ECX,DWORD PTR [ECX+0x19C] 0x2807A663: MOV DWORD PTR [EAX+0x4],ECX ; pp_sort.c - Line 1642 ; CALLRUNOPS(aTHX); 0x2807A666: PUSH DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A669: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A66C: CALL DWORD PTR [EAX+0x86C] 0x2807A672: POP ECX ; pp_sort.c - Line 1643 ; if (PL_stack_sp != PL_stack_base + 1) 0x2807A673: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A676: MOV EAX,DWORD PTR [EAX+0xC] 0x2807A679: ADD EAX,0x4 0x2807A67C: MOV ECX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A67F: CMP DWORD PTR [ECX],EAX 0x2807A681: JZ 0x2807A692 ; (*+0x11) ; pp_sort.c - Line 1644 ; Perl_croak(aTHX_ "Sort subroutine didn't return single value") +; 0x2807A683: PUSH 0x2811EE88 ; SYM:`strin +g' ; DATA:Sort subroutine didn't return single value 0x2807A688: PUSH DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A68B: CALL 0x280E6F94 ; SYM:Perl_c +roak <Void> 0x2807A690: POP ECX 0x2807A691: POP ECX ; pp_sort.c - Line 1645 ; if (!SvNIOKp(*PL_stack_sp)) 0x2807A692: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *>; <==0x2807A681(*-0x11) 0x2807A695: MOV EAX,DWORD PTR [EAX] 0x2807A697: MOV EAX,DWORD PTR [EAX] 0x2807A699: MOV EAX,DWORD PTR [EAX+0x8] 0x2807A69C: AND EAX,0x3000000 0x2807A6A1: TEST EAX,EAX 0x2807A6A3: JNZ 0x2807A6B4 ; (*+0x11) ; pp_sort.c - Line 1646 ; Perl_croak(aTHX_ "Sort subroutine didn't return a numeric valu +e"); 0x2807A6A5: PUSH 0x2811EE58 ; SYM:`strin +g' ; DATA:Sort subroutine didn't return a numeric value 0x2807A6AA: PUSH DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A6AD: CALL 0x280E6F94 ; SYM:Perl_c +roak <Void> 0x2807A6B2: POP ECX 0x2807A6B3: POP ECX ; pp_sort.c - Line 1647 ; result = SvIV(*PL_stack_sp); 0x2807A6B4: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *>; <==0x2807A6A3(*-0x11) 0x2807A6B7: MOV EAX,DWORD PTR [EAX] 0x2807A6B9: MOV EAX,DWORD PTR [EAX] 0x2807A6BB: MOV EAX,DWORD PTR [EAX+0x8] 0x2807A6BE: AND EAX,0x10000 0x2807A6C3: TEST EAX,EAX 0x2807A6C5: JZ 0x2807A6D8 ; (*+0x13) 0x2807A6C7: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A6CA: MOV EAX,DWORD PTR [EAX] 0x2807A6CC: MOV EAX,DWORD PTR [EAX] 0x2807A6CE: MOV EAX,DWORD PTR [EAX] 0x2807A6D0: MOV EAX,DWORD PTR [EAX+0xC] 0x2807A6D3: MOV DWORD PTR [EBP-0x10],EAX ; VAR:0x10 0x2807A6D6: JMP 0x2807A6EC ; (*+0x16) 0x2807A6D8: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *>; <==0x2807A6C5(*-0x13) 0x2807A6DB: MOV EAX,DWORD PTR [EAX] 0x2807A6DD: PUSH DWORD PTR [EAX] 0x2807A6DF: PUSH DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A6E2: CALL 0x280AA037 ; SYM:Perl_s +v_2iv <Long> 0x2807A6E7: POP ECX 0x2807A6E8: POP ECX 0x2807A6E9: MOV DWORD PTR [EBP-0x10],EAX ; VAR:0x10 0x2807A6EC: MOV EAX,DWORD PTR [EBP-0x10] ; VAR:0x10; +<==0x2807A6D6(*-0x16) 0x2807A6EF: MOV DWORD PTR [EBP-0xC],EAX ; VAR:result + <Long> ; pp_sort.c - Line 1648 ; while (PL_scopestack_ix > oldscopeix) { 0x2807A6F2: MOV EAX,DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *>; <==0x2807A706(*+0x14) 0x2807A6F5: MOV EAX,DWORD PTR [EAX+0x18] 0x2807A6F8: CMP EAX,DWORD PTR [EBP-0x4] ; VAR:oldsco +peix <Long> 0x2807A6FB: JLE 0x2807A708 ; (*+0xD) ; pp_sort.c - Line 1649 ; LEAVE; 0x2807A6FD: PUSH DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A700: CALL 0x280A4E0E ; SYM:Perl_p +op_scope <Void> 0x2807A705: POP ECX ; pp_sort.c - Line 1650 ; } 0x2807A706: JMP 0x2807A6F2 ; (*-0x14) ; pp_sort.c - Line 1651 ; leave_scope(oldsaveix); 0x2807A708: PUSH DWORD PTR [EBP-0x8] ; VAR:oldsav +eix <Long>; <==0x2807A6FB(*-0xD) 0x2807A70B: PUSH DWORD PTR [EBP+0x8] ; ARG:my_per +l <interpreter *> 0x2807A70E: CALL 0x280A6A9D ; SYM:Perl_l +eave_scope <Void> 0x2807A713: POP ECX 0x2807A714: POP ECX ; pp_sort.c - Line 1652 ; return result; 0x2807A715: MOV EAX,DWORD PTR [EBP-0xC] ; VAR:result + <Long> ; pp_sort.c - Line 1653 ; } 0x2807A718: LEAVE 0x2807A719: RET ;******************************************************************* +*************

Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algoritm, algorithm on the code side." - tachyon
  • Comment on Re^2: Perl threads sort test program crashes (UPDATED: CAN reproduce win32/5.8.4)
  • Download Code

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://367194]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2020-07-13 13:53 GMT
Find Nodes?
    Voting Booth?

    No recent polls found