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
;*******************************************************************
+*************