#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

Reply via email to