#7323: decoding GADTs gives internal error: stg_ap_v_ret ---------------------------+------------------------------------------------ Reporter: heisenbug | Owner: Type: bug | Status: new Priority: normal | Component: Compiler Version: 7.7 | Keywords: Os: Linux | Architecture: x86_64 (amd64) Failure: Runtime crash | Testcase: yes Blockedby: | Blocking: Related: | ---------------------------+------------------------------------------------
Comment(by heisenbug): Debug session on OS X (i386) {{{ Breakpoint 1, 0x003bfe68 in stg_ap_v_info () (gdb) info reg eax 0x2808 10248 <<<< info table: Main_TPString_con_info ecx 0x4 4 <<<< INFO TYPE (dito) edx 0xd00040 13631552 ebx 0x425f4c 4349772 esp 0xbfffd87c 0xbfffd87c ebp 0xd033ac 0xd033ac esi 0xd058f8 13654264 edi 0xd05900 13654272 eip 0x3bfe68 0x3bfe68 <stg_ap_v_info+676> eflags 0x202 514 cs 0x1b 27 ss 0x23 35 ds 0x23 35 es 0x23 35 fs 0x0 0 gs 0xf 15 (gdb) x/20x $eax-4 0x2804 <Main_TPString_con_info_dsp+8>: 0x00010004 0xff02c683 0x000c0065 0x90660000 0x2814 <Main_TPString_static_info_dsp>: 0x003c216c 0x00000002 0x00010007 0xff02c683 0x2824 <Main_TPString_static_info+4>: 0x000c0065 0x89550000 0xec8353e5 0x0000e834 0x2834 <main+10>: 0x8d5b0000 0x3e380283 0x8b008b00 0x008b0450 0x2844 <main+26>: 0x89f04589 0x45c7f455 0x000002f0 0xf0458b00 (gdb) x/20x $eax 0x2808 <Main_TPString_con_info>: 0xff02c683 0x000c0065 0x90660000 0x003c216c 0x2818 <Main_TPString_static_info_dsp+4>: 0x00000002 0x00010007 0xff02c683 0x000c0065 0x2828 <Main_TPString_static_info+8>: 0x89550000 0xec8353e5 0x0000e834 0x8d5b0000 0x2838 <main+14>: 0x3e380283 0x8b008b00 0x008b0450 0x89f04589 0x2848 <main+30>: 0x45c7f455 0x000002f0 0xf0458b00 0x89f4558b (gdb) p *(short*)0x2804 $1 = 4 }}} It loads the address `Main_TPString_con_info` at this code position: `Main_zdWTPString_info+0x14` {{{ _Main_zdWTPString_info_dsp: 00000044 orb $_Main_zdWTPInt_info_dsp,%al 00000046 addb (%eax),%al 00000048 addb %al,(%eax) 0000004a addb %al,(%eax) 0000004c sldt (%eax) 0000004f addb %al,0x7b3b0cc7(%ebx) 00000055 popl %esp 00000056 ja 0x00000073 00000058 movl $_Main_TPString_con_info,0xf8(%edi) <<<<<<<<<<<<<<<< 0000005f movl _Main_zdWTPInt_info_dsp(%ebp),%eax 00000062 movl %eax,0xfc(%edi) 00000065 movl 0x04(%ebp),%eax 00000068 movl %eax,(%edi) 0000006a leal 0xfa(%edi),%esi 0000006d addl $0x08,%ebp 00000070 jmp *_Main_zdWTPInt_info_dsp(%ebp) <<<< calls stg_upd_frame_info 00000073 movl $_Main_zdWTPInt_info,0x74(%ebx) 0000007a movl $_Main_zdWTPString_closure,%esi 0000007f jmp *0xfc(%ebx) 00000082 orb $_Main_zdWTPInt_info_dsp,%al 00000084 addb %al,(%eax) 00000086 nop }}} {{{ 0x003bfa18 <stg_upd_frame_info+0>: mov 0x4(%ebp),%eax 0x003bfa1b <stg_upd_frame_info+3>: add $0x8,%ebp 0x003bfa1e <stg_upd_frame_info+6>: sub $0x8,%esp 0x003bfa21 <stg_upd_frame_info+9>: push %eax 0x003bfa22 <stg_upd_frame_info+10>: mov %eax,0x4c(%esp) 0x003bfa26 <stg_upd_frame_info+14>: call 0x3892d5 <overwritingClosure> >>> overwritingClosure (p=0xd058e8) at ClosureMacros.h:474 0x003bfa2b <stg_upd_frame_info+19>: add $0xc,%esp 0x003bfa2e <stg_upd_frame_info+22>: mov 0x40(%esp),%eax 0x003bfa32 <stg_upd_frame_info+26>: mov %esi,0x4(%eax) 0x003bfa35 <stg_upd_frame_info+29>: mov 0x3e63d8,%ecx 0x003bfa3b <stg_upd_frame_info+35>: mov %ecx,(%eax) 0x003bfa3d <stg_upd_frame_info+37>: mov %eax,%ecx 0x003bfa3f <stg_upd_frame_info+39>: and $0xfff00000,%ecx 0x003bfa45 <stg_upd_frame_info+45>: mov %eax,%edx 0x003bfa47 <stg_upd_frame_info+47>: and $0xff000,%edx 0x003bfa4d <stg_upd_frame_info+53>: shr $0x7,%edx 0x003bfa50 <stg_upd_frame_info+56>: or %ecx,%edx 0x003bfa52 <stg_upd_frame_info+58>: cmpw $0x0,0x14(%edx) 0x003bfa57 <stg_upd_frame_info+63>: jne 0x3bfa5c <stg_upd_frame_info+68> 0x003bfa59 <stg_upd_frame_info+65>: jmp *0x0(%ebp) >>>>>>>> stg_marked_upd_frame_info 0x003bfa5c <stg_upd_frame_info+68>: movswl 0x14(%edx),%ecx 0x003bfa60 <stg_upd_frame_info+72>: shl $0x2,%ecx 0x003bfa63 <stg_upd_frame_info+75>: mov 0x9c(%ebx),%edx 0x003bfa69 <stg_upd_frame_info+81>: add %ecx,%edx 0x003bfa6b <stg_upd_frame_info+83>: mov (%edx),%ecx 0x003bfa6d <stg_upd_frame_info+85>: mov (%ecx),%eax 0x003bfa6f <stg_upd_frame_info+87>: add $0x1000,%eax 0x003bfa74 <stg_upd_frame_info+92>: cmp %eax,0x4(%ecx) 0x003bfa77 <stg_upd_frame_info+95>: jae 0x3bfa8b <stg_upd_frame_info+115> 0x003bfa79 <stg_upd_frame_info+97>: mov 0x4(%ecx),%eax 0x003bfa7c <stg_upd_frame_info+100>: mov 0x40(%esp),%edx 0x003bfa80 <stg_upd_frame_info+104>: mov %edx,(%eax) 0x003bfa82 <stg_upd_frame_info+106>: add $0x4,%eax 0x003bfa85 <stg_upd_frame_info+109>: mov %eax,0x4(%ecx) 0x003bfa88 <stg_upd_frame_info+112>: jmp *0x0(%ebp) 0x003bfa8b <stg_upd_frame_info+115>: sub $0xc,%esp 0x003bfa8e <stg_upd_frame_info+118>: mov %edx,0x58(%esp) 0x003bfa92 <stg_upd_frame_info+122>: mov %ecx,0x64(%esp) 0x003bfa96 <stg_upd_frame_info+126>: call 0x3a974c <allocBlock_lock> 0x003bfa9b <stg_upd_frame_info+131>: add $0xc,%esp 0x003bfa9e <stg_upd_frame_info+134>: mov 0x58(%esp),%ecx 0x003bfaa2 <stg_upd_frame_info+138>: mov %ecx,0x8(%eax) 0x003bfaa5 <stg_upd_frame_info+141>: mov 0x4c(%esp),%ecx 0x003bfaa9 <stg_upd_frame_info+145>: mov %eax,(%ecx) 0x003bfaab <stg_upd_frame_info+147>: mov %eax,%ecx 0x003bfaad <stg_upd_frame_info+149>: jmp 0x3bfa79 <stg_upd_frame_info+97> 0x003bfaaf <stg_upd_frame_info+151>: or %al,(%eax) 0x003bfab1 <stg_upd_frame_info+153>: add %al,(%eax) 0x003bfab3 <stg_upd_frame_info+155>: nop End of assembler dump. }}} Next function {{{ Dump of assembler code for function stg_marked_upd_frame_info: 0x003bfabc <stg_marked_upd_frame_info+0>: mov 0x4(%ebp),%eax 0x003bfabf <stg_marked_upd_frame_info+3>: mov 0x4(%eax),%ecx 0x003bfac2 <stg_marked_upd_frame_info+6>: add $0x8,%ebp 0x003bfac5 <stg_marked_upd_frame_info+9>: test $0x3,%ecx 0x003bfacb <stg_marked_upd_frame_info+15>: jne 0x3bfaf8 <stg_marked_upd_frame_info+60> 0x003bfacd <stg_marked_upd_frame_info+17>: cmp 0x64(%ebx),%ecx 0x003bfad0 <stg_marked_upd_frame_info+20>: je 0x3bfb63 <stg_marked_upd_frame_info+167> ++++ jumps 0x003bfad6 <stg_marked_upd_frame_info+26>: lea -0xc(%ebx),%ecx 0x003bfad9 <stg_marked_upd_frame_info+29>: mov 0x64(%ebx),%edx 0x003bfadc <stg_marked_upd_frame_info+32>: mov %eax,0x40(%esp) 0x003bfae0 <stg_marked_upd_frame_info+36>: mov %esi,%eax 0x003bfae2 <stg_marked_upd_frame_info+38>: sub $0xc,%esp 0x003bfae5 <stg_marked_upd_frame_info+41>: push %eax 0x003bfae6 <stg_marked_upd_frame_info+42>: mov 0x50(%esp),%eax 0x003bfaea <stg_marked_upd_frame_info+46>: push %eax 0x003bfaeb <stg_marked_upd_frame_info+47>: push %edx 0x003bfaec <stg_marked_upd_frame_info+48>: push %ecx 0x003bfaed <stg_marked_upd_frame_info+49>: call 0x3a512c <updateThunk> 0x003bfaf2 <stg_marked_upd_frame_info+54>: add $0x1c,%esp 0x003bfaf5 <stg_marked_upd_frame_info+57>: jmp *0x0(%ebp) 0x003bfaf8 <stg_marked_upd_frame_info+60>: mov %ecx,%esi 0x003bfafa <stg_marked_upd_frame_info+62>: lea -0xc(%ebx),%eax 0x003bfafd <stg_marked_upd_frame_info+65>: mov 0x64(%ebx),%ecx 0x003bfb00 <stg_marked_upd_frame_info+68>: sub $0x4,%esp 0x003bfb03 <stg_marked_upd_frame_info+71>: push %ecx 0x003bfb04 <stg_marked_upd_frame_info+72>: push %eax 0x003bfb05 <stg_marked_upd_frame_info+73>: call 0x3a5093 <checkBlockingQueues> 0x003bfb0a <stg_marked_upd_frame_info+78>: add $0xc,%esp 0x003bfb0d <stg_marked_upd_frame_info+81>: jmp *0x0(%ebp) 0x003bfb10 <stg_marked_upd_frame_info+84>: sub $0xc,%esp 0x003bfb13 <stg_marked_upd_frame_info+87>: mov %edx,0x58(%esp) 0x003bfb17 <stg_marked_upd_frame_info+91>: mov %ecx,0x64(%esp) 0x003bfb1b <stg_marked_upd_frame_info+95>: call 0x3a974c <allocBlock_lock> 0x003bfb20 <stg_marked_upd_frame_info+100>: add $0xc,%esp 0x003bfb23 <stg_marked_upd_frame_info+103>: mov 0x58(%esp),%ecx 0x003bfb27 <stg_marked_upd_frame_info+107>: mov %ecx,0x8(%eax) 0x003bfb2a <stg_marked_upd_frame_info+110>: mov 0x4c(%esp),%ecx 0x003bfb2e <stg_marked_upd_frame_info+114>: mov %eax,(%ecx) 0x003bfb30 <stg_marked_upd_frame_info+116>: mov %eax,%ecx 0x003bfb32 <stg_marked_upd_frame_info+118>: mov 0x4(%ecx),%eax 0x003bfb35 <stg_marked_upd_frame_info+121>: mov 0x40(%esp),%edx 0x003bfb39 <stg_marked_upd_frame_info+125>: mov %edx,(%eax) 0x003bfb3b <stg_marked_upd_frame_info+127>: add $0x4,%eax 0x003bfb3e <stg_marked_upd_frame_info+130>: mov %eax,0x4(%ecx) 0x003bfb41 <stg_marked_upd_frame_info+133>: jmp *0x0(%ebp) 0x003bfb44 <stg_marked_upd_frame_info+136>: movswl 0x14(%edx),%ecx 0x003bfb48 <stg_marked_upd_frame_info+140>: shl $0x2,%ecx 0x003bfb4b <stg_marked_upd_frame_info+143>: mov 0x9c(%ebx),%edx 0x003bfb51 <stg_marked_upd_frame_info+149>: add %ecx,%edx 0x003bfb53 <stg_marked_upd_frame_info+151>: mov (%edx),%ecx 0x003bfb55 <stg_marked_upd_frame_info+153>: mov (%ecx),%eax 0x003bfb57 <stg_marked_upd_frame_info+155>: add $0x1000,%eax 0x003bfb5c <stg_marked_upd_frame_info+160>: cmp %eax,0x4(%ecx) 0x003bfb5f <stg_marked_upd_frame_info+163>: jae 0x3bfb10 <stg_marked_upd_frame_info+84> 0x003bfb61 <stg_marked_upd_frame_info+165>: jmp 0x3bfb32 <stg_marked_upd_frame_info+118> 0x003bfb63 <stg_marked_upd_frame_info+167>: sub $0x8,%esp <<<<<< here 0x003bfb66 <stg_marked_upd_frame_info+170>: push %eax 0x003bfb67 <stg_marked_upd_frame_info+171>: mov %eax,0x4c(%esp) 0x003bfb6b <stg_marked_upd_frame_info+175>: call 0x3892d5 <overwritingClosure> 0x003bfb70 <stg_marked_upd_frame_info+180>: add $0xc,%esp 0x003bfb73 <stg_marked_upd_frame_info+183>: mov 0x40(%esp),%eax 0x003bfb77 <stg_marked_upd_frame_info+187>: mov %esi,0x4(%eax) 0x003bfb7a <stg_marked_upd_frame_info+190>: mov 0x3e63d8,%ecx 0x003bfb80 <stg_marked_upd_frame_info+196>: mov %ecx,(%eax) 0x003bfb82 <stg_marked_upd_frame_info+198>: mov %eax,%ecx 0x003bfb84 <stg_marked_upd_frame_info+200>: and $0xfff00000,%ecx 0x003bfb8a <stg_marked_upd_frame_info+206>: mov %eax,%edx 0x003bfb8c <stg_marked_upd_frame_info+208>: and $0xff000,%edx 0x003bfb92 <stg_marked_upd_frame_info+214>: shr $0x7,%edx 0x003bfb95 <stg_marked_upd_frame_info+217>: or %ecx,%edx 0x003bfb97 <stg_marked_upd_frame_info+219>: cmpw $0x0,0x14(%edx) 0x003bfb9c <stg_marked_upd_frame_info+224>: jne 0x3bfb44 <stg_marked_upd_frame_info+136> 0x003bfb9e <stg_marked_upd_frame_info+226>: jmp *0x0(%ebp) >>>>>>> stg_ap_v_info 0x003bfba1 <stg_marked_upd_frame_info+229>: or %al,(%eax) 0x003bfba3 <stg_marked_upd_frame_info+231>: add %al,(%eax) 0x003bfba5 <stg_marked_upd_frame_info+233>: nopl (%eax) End of assembler dump. }}} Now jumping in the crasher {{{ Dump of assembler code for function stg_ap_v_info: 0x003bfbc4 <stg_ap_v_info+0>: mov 0x3e6224,%eax 0x003bfbc9 <stg_ap_v_info+5>: cmpl $0x0,0xb4(%eax) 0x003bfbd0 <stg_ap_v_info+12>: jne 0x3bfc02 <stg_ap_v_info+62> 0x003bfbd2 <stg_ap_v_info+14>: mov 0x3e6224,%eax 0x003bfbd7 <stg_ap_v_info+19>: cmpl $0x0,0xa4(%eax) 0x003bfbde <stg_ap_v_info+26>: jne 0x3bfe78 <stg_ap_v_info+692> 0x003bfbe4 <stg_ap_v_info+32>: mov %esi,%eax 0x003bfbe6 <stg_ap_v_info+34>: and $0x3,%eax 0x003bfbe9 <stg_ap_v_info+37>: cmp $0x1,%eax 0x003bfbec <stg_ap_v_info+40>: je 0x3bfe8c <stg_ap_v_info+712> 0x003bfbf2 <stg_ap_v_info+46>: and $0xfffffffc,%esi 0x003bfbf5 <stg_ap_v_info+49>: mov (%esi),%eax 0x003bfbf7 <stg_ap_v_info+51>: movswl -0x4(%eax),%ecx ==== ecx 0x4 4 0x003bfbfb <stg_ap_v_info+55>: jmp *0x3d75ec(,%ecx,4) >>>>> 0x003bfe68 0x003bfc02 <stg_ap_v_info+62>: sub $0x8,%esp 0x003bfc05 <stg_ap_v_info+65>: push $0x3d75c8 0x003bfc0a <stg_ap_v_info+70>: call 0x39879c <debugBelch> 0x003bfc0f <stg_ap_v_info+75>: add $0xc,%esp 0x003bfc12 <stg_ap_v_info+78>: mov %esi,%eax 0x003bfc14 <stg_ap_v_info+80>: sub $0x8,%esp 0x003bfc17 <stg_ap_v_info+83>: push %eax 0x003bfc18 <stg_ap_v_info+84>: call 0x391820 <printClosure> 0x003bfc1d <stg_ap_v_info+89>: add $0xc,%esp 0x003bfc20 <stg_ap_v_info+92>: jmp 0x3bfbd2 <stg_ap_v_info+14> 0x003bfc22 <stg_ap_v_info+94>: mov 0x4(%esi),%esi 0x003bfc25 <stg_ap_v_info+97>: jmp 0x3bfbe4 <stg_ap_v_info+32> 0x003bfc27 <stg_ap_v_info+99>: mov 0x3e64d4,%ecx 0x003bfc2d <stg_ap_v_info+105>: mov %ecx,0x0(%ebp) 0x003bfc30 <stg_ap_v_info+108>: jmp *%eax 0x003bfc32 <stg_ap_v_info+110>: add $0x4,%ebp 0x003bfc35 <stg_ap_v_info+113>: mov 0x3e64d4,%eax 0x003bfc3a <stg_ap_v_info+118>: mov %eax,0x4(%ebx) 0x003bfc3d <stg_ap_v_info+121>: jmp *0x3e64a0 0x003bfc43 <stg_ap_v_info+127>: mov %ecx,0x58(%esp) 0x003bfc47 <stg_ap_v_info+131>: inc %ecx 0x003bfc48 <stg_ap_v_info+132>: mov 0x0(%ebp,%ecx,4),%ecx 0x003bfc4c <stg_ap_v_info+136>: mov %eax,0x64(%esp) 0x003bfc50 <stg_ap_v_info+140>: add $0xc,%eax 0x003bfc53 <stg_ap_v_info+143>: mov %edx,0x70(%esp) 0x003bfc57 <stg_ap_v_info+147>: mov %eax,0x7c(%esp) 0x003bfc5b <stg_ap_v_info+151>: mov 0x58(%esp),%eax 0x003bfc5f <stg_ap_v_info+155>: add %eax,%edx 0x003bfc61 <stg_ap_v_info+157>: mov 0x7c(%esp),%eax 0x003bfc65 <stg_ap_v_info+161>: mov %ecx,(%eax,%edx,4) 0x003bfc68 <stg_ap_v_info+164>: mov 0x58(%esp),%eax 0x003bfc6c <stg_ap_v_info+168>: inc %eax 0x003bfc6d <stg_ap_v_info+169>: mov 0x70(%esp),%edx 0x003bfc71 <stg_ap_v_info+173>: mov %eax,%ecx 0x003bfc73 <stg_ap_v_info+175>: mov 0x64(%esp),%eax 0x003bfc77 <stg_ap_v_info+179>: test %ecx,%ecx 0x003bfc79 <stg_ap_v_info+181>: jb 0x3bfc43 <stg_ap_v_info+127> 0x003bfc7b <stg_ap_v_info+183>: mov %eax,%esi 0x003bfc7d <stg_ap_v_info+185>: add $0x4,%ebp 0x003bfc80 <stg_ap_v_info+188>: jmp *0x0(%ebp) 0x003bfc83 <stg_ap_v_info+191>: mov %ecx,0x58(%esp) 0x003bfc87 <stg_ap_v_info+195>: mov 0x4c(%esp),%ecx 0x003bfc8b <stg_ap_v_info+199>: add $0xc,%ecx 0x003bfc8e <stg_ap_v_info+202>: mov %eax,0x64(%esp) 0x003bfc92 <stg_ap_v_info+206>: mov 0x58(%esp),%eax 0x003bfc96 <stg_ap_v_info+210>: mov (%ecx,%eax,4),%ecx 0x003bfc99 <stg_ap_v_info+213>: mov 0x64(%esp),%eax 0x003bfc9d <stg_ap_v_info+217>: add $0xc,%eax 0x003bfca0 <stg_ap_v_info+220>: mov %edx,0x70(%esp) 0x003bfca4 <stg_ap_v_info+224>: mov 0x58(%esp),%edx 0x003bfca8 <stg_ap_v_info+228>: mov %ecx,(%eax,%edx,4) 0x003bfcab <stg_ap_v_info+231>: inc %edx 0x003bfcac <stg_ap_v_info+232>: mov 0x64(%esp),%eax 0x003bfcb0 <stg_ap_v_info+236>: mov %edx,%ecx 0x003bfcb2 <stg_ap_v_info+238>: mov 0x70(%esp),%edx 0x003bfcb6 <stg_ap_v_info+242>: cmp %edx,%ecx 0x003bfcb8 <stg_ap_v_info+244>: jb 0x3bfc83 <stg_ap_v_info+191> 0x003bfcba <stg_ap_v_info+246>: xor %ecx,%ecx 0x003bfcbc <stg_ap_v_info+248>: jmp 0x3bfc77 <stg_ap_v_info+179> 0x003bfcbe <stg_ap_v_info+250>: mov %eax,0x40(%esp) 0x003bfcc2 <stg_ap_v_info+254>: mov 0x40(%esp),%eax 0x003bfcc6 <stg_ap_v_info+258>: cmp $0x1,%eax 0x003bfcc9 <stg_ap_v_info+261>: je 0x3bfc32 <stg_ap_v_info+110> 0x003bfccf <stg_ap_v_info+267>: mov %esi,%ecx 0x003bfcd1 <stg_ap_v_info+269>: movswl 0x6(%esi),%edx 0x003bfcd5 <stg_ap_v_info+273>: shl $0x2,%edx 0x003bfcd8 <stg_ap_v_info+276>: add $0xc,%edx 0x003bfcdb <stg_ap_v_info+279>: add %edx,%edi 0x003bfcdd <stg_ap_v_info+281>: cmp 0x5c(%ebx),%edi 0x003bfce0 <stg_ap_v_info+284>: ja 0x3bfd31 <stg_ap_v_info+365> 0x003bfce2 <stg_ap_v_info+286>: lea 0x4(%edi),%eax 0x003bfce5 <stg_ap_v_info+289>: sub %edx,%eax 0x003bfce7 <stg_ap_v_info+291>: mov 0x3e64a4,%edx 0x003bfced <stg_ap_v_info+297>: mov %edx,(%eax) 0x003bfcef <stg_ap_v_info+299>: mov 0x40(%esp),%edx 0x003bfcf3 <stg_ap_v_info+303>: dec %edx 0x003bfcf4 <stg_ap_v_info+304>: mov %dx,0x4(%eax) 0x003bfcf8 <stg_ap_v_info+308>: movswl 0x6(%ecx),%edx 0x003bfcfc <stg_ap_v_info+312>: mov %ecx,0x4c(%esp) 0x003bfd00 <stg_ap_v_info+316>: lea (%edx),%ecx 0x003bfd02 <stg_ap_v_info+318>: mov %cx,0x6(%eax) 0x003bfd06 <stg_ap_v_info+322>: mov 0x4c(%esp),%ecx 0x003bfd0a <stg_ap_v_info+326>: mov 0x8(%ecx),%ecx 0x003bfd0d <stg_ap_v_info+329>: mov %ecx,0x8(%eax) 0x003bfd10 <stg_ap_v_info+332>: xor %ecx,%ecx 0x003bfd12 <stg_ap_v_info+334>: jmp 0x3bfcb6 <stg_ap_v_info+242> 0x003bfd14 <stg_ap_v_info+336>: movswl 0x4(%esi),%eax 0x003bfd18 <stg_ap_v_info+340>: test %eax,%eax 0x003bfd1a <stg_ap_v_info+342>: ja 0x3bfcbe <stg_ap_v_info+250> 0x003bfd1c <stg_ap_v_info+344>: sub $0x4,%esp 0x003bfd1f <stg_ap_v_info+347>: push $0x36 0x003bfd21 <stg_ap_v_info+349>: push $0x0 0x003bfd23 <stg_ap_v_info+351>: mov %eax,0x4c(%esp) 0x003bfd27 <stg_ap_v_info+355>: call 0x3986fd <_assertFail> 0x003bfd2c <stg_ap_v_info+360>: add $0xc,%esp 0x003bfd2f <stg_ap_v_info+363>: jmp 0x3bfcc2 <stg_ap_v_info+254> 0x003bfd31 <stg_ap_v_info+365>: mov %edx,0x74(%ebx) 0x003bfd34 <stg_ap_v_info+368>: mov 0x3e64d4,%eax 0x003bfd39 <stg_ap_v_info+373>: mov %eax,0x0(%ebp) 0x003bfd3c <stg_ap_v_info+376>: jmp *-0x8(%ebx) 0x003bfd3f <stg_ap_v_info+379>: add $0x4,%ebp 0x003bfd42 <stg_ap_v_info+382>: inc %esi 0x003bfd43 <stg_ap_v_info+383>: mov %esi,%eax 0x003bfd45 <stg_ap_v_info+385>: and $0xfffffffc,%eax 0x003bfd48 <stg_ap_v_info+388>: jmp *(%eax) 0x003bfd4a <stg_ap_v_info+390>: lea 0x1(%eax),%ecx 0x003bfd4d <stg_ap_v_info+393>: mov 0x0(%ebp,%ecx,4),%ecx 0x003bfd51 <stg_ap_v_info+397>: mov %edx,0x4c(%esp) 0x003bfd55 <stg_ap_v_info+401>: add $0xc,%edx 0x003bfd58 <stg_ap_v_info+404>: mov %ecx,(%edx,%eax,4) 0x003bfd5b <stg_ap_v_info+407>: inc %eax 0x003bfd5c <stg_ap_v_info+408>: mov 0x4c(%esp),%edx 0x003bfd60 <stg_ap_v_info+412>: test %eax,%eax 0x003bfd62 <stg_ap_v_info+414>: jb 0x3bfd4a <stg_ap_v_info+390> 0x003bfd64 <stg_ap_v_info+416>: mov %edx,%esi 0x003bfd66 <stg_ap_v_info+418>: add $0x4,%ebp 0x003bfd69 <stg_ap_v_info+421>: jmp *0x0(%ebp) 0x003bfd6c <stg_ap_v_info+424>: mov %eax,0x40(%esp) 0x003bfd70 <stg_ap_v_info+428>: mov 0x40(%esp),%eax 0x003bfd74 <stg_ap_v_info+432>: cmp $0x1,%eax 0x003bfd77 <stg_ap_v_info+435>: je 0x3bfd3f <stg_ap_v_info+379> 0x003bfd79 <stg_ap_v_info+437>: cmp $0x4,%eax 0x003bfd7c <stg_ap_v_info+440>: jb 0x3bfdc7 <stg_ap_v_info+515> 0x003bfd7e <stg_ap_v_info+442>: mov $0xc,%ecx 0x003bfd83 <stg_ap_v_info+447>: add $0xc,%edi 0x003bfd86 <stg_ap_v_info+450>: cmp 0x5c(%ebx),%edi 0x003bfd89 <stg_ap_v_info+453>: ja 0x3bfdcb <stg_ap_v_info+519> 0x003bfd8b <stg_ap_v_info+455>: lea 0x4(%edi),%edx 0x003bfd8e <stg_ap_v_info+458>: sub %ecx,%edx 0x003bfd90 <stg_ap_v_info+460>: mov 0x3e64a4,%ecx 0x003bfd96 <stg_ap_v_info+466>: mov %ecx,(%edx) 0x003bfd98 <stg_ap_v_info+468>: dec %eax 0x003bfd99 <stg_ap_v_info+469>: mov %ax,0x4(%edx) 0x003bfd9d <stg_ap_v_info+473>: mov %esi,0x8(%edx) 0x003bfda0 <stg_ap_v_info+476>: movw $0x0,0x6(%edx) 0x003bfda6 <stg_ap_v_info+482>: xor %eax,%eax 0x003bfda8 <stg_ap_v_info+484>: jmp 0x3bfd60 <stg_ap_v_info+412> 0x003bfdaa <stg_ap_v_info+486>: movswl -0xa(%eax),%eax 0x003bfdae <stg_ap_v_info+490>: test %eax,%eax 0x003bfdb0 <stg_ap_v_info+492>: ja 0x3bfd6c <stg_ap_v_info+424> 0x003bfdb2 <stg_ap_v_info+494>: sub $0x4,%esp 0x003bfdb5 <stg_ap_v_info+497>: push $0x28 0x003bfdb7 <stg_ap_v_info+499>: push $0x0 0x003bfdb9 <stg_ap_v_info+501>: mov %eax,0x4c(%esp) 0x003bfdbd <stg_ap_v_info+505>: call 0x3986fd <_assertFail> 0x003bfdc2 <stg_ap_v_info+510>: add $0xc,%esp 0x003bfdc5 <stg_ap_v_info+513>: jmp 0x3bfd70 <stg_ap_v_info+428> 0x003bfdc7 <stg_ap_v_info+515>: add %eax,%esi 0x003bfdc9 <stg_ap_v_info+517>: jmp 0x3bfd7e <stg_ap_v_info+442> 0x003bfdcb <stg_ap_v_info+519>: mov %ecx,0x74(%ebx) 0x003bfdce <stg_ap_v_info+522>: mov 0x3e64d4,%eax 0x003bfdd3 <stg_ap_v_info+527>: mov %eax,0x0(%ebp) 0x003bfdd6 <stg_ap_v_info+530>: jmp *-0x8(%ebx) 0x003bfdd9 <stg_ap_v_info+533>: add $0x4,%ebp 0x003bfddc <stg_ap_v_info+536>: jmp *0x3e649c 0x003bfde2 <stg_ap_v_info+542>: lea 0x1(%eax),%ecx 0x003bfde5 <stg_ap_v_info+545>: mov 0x0(%ebp,%ecx,4),%ecx 0x003bfde9 <stg_ap_v_info+549>: mov %edx,0x4c(%esp) 0x003bfded <stg_ap_v_info+553>: add $0xc,%edx 0x003bfdf0 <stg_ap_v_info+556>: mov %ecx,(%edx,%eax,4) 0x003bfdf3 <stg_ap_v_info+559>: inc %eax 0x003bfdf4 <stg_ap_v_info+560>: mov 0x4c(%esp),%edx 0x003bfdf8 <stg_ap_v_info+564>: test %eax,%eax 0x003bfdfa <stg_ap_v_info+566>: jb 0x3bfde2 <stg_ap_v_info+542> 0x003bfdfc <stg_ap_v_info+568>: mov %edx,%esi 0x003bfdfe <stg_ap_v_info+570>: add $0x4,%ebp 0x003bfe01 <stg_ap_v_info+573>: jmp *0x0(%ebp) 0x003bfe04 <stg_ap_v_info+576>: mov %eax,0x40(%esp) 0x003bfe08 <stg_ap_v_info+580>: mov 0x40(%esp),%eax 0x003bfe0c <stg_ap_v_info+584>: cmp $0x1,%eax 0x003bfe0f <stg_ap_v_info+587>: je 0x3bfdd9 <stg_ap_v_info+533> 0x003bfe11 <stg_ap_v_info+589>: mov $0xc,%ecx 0x003bfe16 <stg_ap_v_info+594>: add $0xc,%edi 0x003bfe19 <stg_ap_v_info+597>: cmp 0x5c(%ebx),%edi 0x003bfe1c <stg_ap_v_info+600>: ja 0x3bfe5a <stg_ap_v_info+662> 0x003bfe1e <stg_ap_v_info+602>: lea 0x4(%edi),%edx 0x003bfe21 <stg_ap_v_info+605>: sub %ecx,%edx 0x003bfe23 <stg_ap_v_info+607>: mov 0x3e64a4,%ecx 0x003bfe29 <stg_ap_v_info+613>: mov %ecx,(%edx) 0x003bfe2b <stg_ap_v_info+615>: dec %eax 0x003bfe2c <stg_ap_v_info+616>: mov %ax,0x4(%edx) 0x003bfe30 <stg_ap_v_info+620>: mov %esi,0x8(%edx) 0x003bfe33 <stg_ap_v_info+623>: movw $0x0,0x6(%edx) 0x003bfe39 <stg_ap_v_info+629>: xor %eax,%eax 0x003bfe3b <stg_ap_v_info+631>: jmp 0x3bfdf8 <stg_ap_v_info+564> 0x003bfe3d <stg_ap_v_info+633>: movswl 0x10(%esi),%eax 0x003bfe41 <stg_ap_v_info+637>: test %eax,%eax 0x003bfe43 <stg_ap_v_info+639>: ja 0x3bfe04 <stg_ap_v_info+576> 0x003bfe45 <stg_ap_v_info+641>: sub $0x4,%esp 0x003bfe48 <stg_ap_v_info+644>: push $0x18 0x003bfe4a <stg_ap_v_info+646>: push $0x0 0x003bfe4c <stg_ap_v_info+648>: mov %eax,0x4c(%esp) 0x003bfe50 <stg_ap_v_info+652>: call 0x3986fd <_assertFail> 0x003bfe55 <stg_ap_v_info+657>: add $0xc,%esp 0x003bfe58 <stg_ap_v_info+660>: jmp 0x3bfe08 <stg_ap_v_info+580> 0x003bfe5a <stg_ap_v_info+662>: mov %ecx,0x74(%ebx) 0x003bfe5d <stg_ap_v_info+665>: mov 0x3e64d4,%eax 0x003bfe62 <stg_ap_v_info+670>: mov %eax,0x0(%ebp) 0x003bfe65 <stg_ap_v_info+673>: jmp *-0x8(%ebx) 0x003bfe68 <stg_ap_v_info+676>: sub $0x8,%esp <<<<<< here 0x003bfe6b <stg_ap_v_info+679>: push $0x3d75dc 0x003bfe70 <stg_ap_v_info+684>: call 0x3986aa <barf> BOOOOOM! 0x003bfe75 <stg_ap_v_info+689>: add $0xc,%esp 0x003bfe78 <stg_ap_v_info+692>: lea 0x4(%ebp),%eax 0x003bfe7b <stg_ap_v_info+695>: sub $0x8,%esp 0x003bfe7e <stg_ap_v_info+698>: push %eax 0x003bfe7f <stg_ap_v_info+699>: call 0x3b09e5 <checkStackFrame> 0x003bfe84 <stg_ap_v_info+704>: add $0xc,%esp 0x003bfe87 <stg_ap_v_info+707>: jmp 0x3bfbe4 <stg_ap_v_info+32> 0x003bfe8c <stg_ap_v_info+712>: add $0x4,%ebp 0x003bfe8f <stg_ap_v_info+715>: jmp *-0x1(%esi) 0x003bfe92 <stg_ap_v_info+718>: or %al,(%eax) 0x003bfe94 <stg_ap_v_info+720>: add %al,(%eax) 0x003bfe96 <stg_ap_v_info+722>: xchg %ax,%ax End of assembler dump. }}} -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7323#comment:3> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler _______________________________________________ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs