[GHC] #12501: Windows builds segfault (as in doesn't work at all).
GHC
ghc-devs at haskell.org
Thu Aug 18 19:31:51 UTC 2016
#12501: Windows builds segfault (as in doesn't work at all).
-------------------------------------+-------------------------------------
Reporter: Phyx- | Owner: Phyx-
Type: bug | Status: new
Priority: highest | Milestone:
Component: Compiler | Version: 8.0.1
Keywords: | Operating System: Windows
Architecture: | Type of failure: GHC doesn't work
Unknown/Multiple | at all
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Commit a9bc54766ddd1bdb011f1656ad58fb409055d08f is the last known good
commit for the Windows build of GHC.
After this point multiple segfaults were introduced due to changes in the
rts and GC.
One was introduced by the compacts regions patch
cf989ffe490c146be4ed0fd7e0c00d3ff8fe1453 but fixed by
f9a11a241b8056ac2b9c771172a48919fb3d0ed1
Unfortunately because many of the intermediate commits between
cf989ffe490c146be4ed0fd7e0c00d3ff8fe1453 also break the build I can't run
a proper bisect. And because of some very large commits in between it
makes it really hard to cherry-pick individual commits or rebase certain
ones out manually to try.
Effectively something was committed that makes GC go horribly wrong.
{{{
Tamar at Kino MINGW64 ~/ghc2
$ inplace/bin/ghc-stage2.exe --version
The Glorious Glasgow Haskell Compilation System, version 8.1.20160817
Segmentation fault
}}}
In GDB
{{{
Program received signal SIGSEGV, Segmentation fault.
0x0000000002aa35d9 in LOOKS_LIKE_CLOSURE_PTR (p=0x2cd1dd000000000) at
includes/rts/storage/ClosureMacros.h:275
275 (UNTAG_CONST_CLOSURE((const StgClosure
*)(p)))->header.info);
(gdb) bt
#0 0x0000000002aa35d9 in LOOKS_LIKE_CLOSURE_PTR (p=0x2cd1dd000000000) at
includes/rts/storage/ClosureMacros.h:275
#1 0x0000000002aa3e3e in evacuate1 (p=0x31c1a04 <S4UR_srt+4>) at
rts\sm\Evac.c:416
#2 0x0000000002a7a183 in scavenge_srt (srt=0x31c1a04 <S4UR_srt+4>,
srt_bitmap=1) at rts\sm\Scav.c:351
#3 0x0000000002a7a253 in scavenge_fun_srt (info=0x278dfb0 <c1Fi_info+88>)
at rts\sm\Scav.c:390
#4 0x0000000002a7c245 in scavenge_static () at rts\sm\Scav.c:1747
#5 0x0000000002a7c8f2 in scavenge_loop1 () at rts\sm\Scav.c:2081
#6 0x0000000002a722bb in scavenge_until_all_done () at rts\sm\GC.c:968
#7 0x0000000002a71008 in GarbageCollect (collect_gen=1,
do_heap_census=rtsFalse, gc_type=2, cap=0x320f5c0 <MainCapability>) at
rts\sm\GC.c:403
#8 0x0000000002a61856 in scheduleDoGC (pcap=0x3b4fbb8, task=0x6c6e0d0,
force_major=rtsFalse) at rts\Schedule.c:1797
#9 0x0000000002a5fb68 in schedule (initialCapability=0x320f5c0
<MainCapability>, task=0x6c6e0d0) at rts\Schedule.c:552
#10 0x0000000002a62355 in scheduleWaitThread (tso=0x7205b98, ret=0x0,
pcap=0x3b4fd40) at rts\Schedule.c:2494
#11 0x0000000002a4e24a in rts_evalLazyIO (cap=0x3b4fd40, p=0x2aabad0
<ZCMain_main_closure>, ret=0x0) at rts\RtsAPI.c:500
#12 0x0000000002a4d350 in hs_main (argc=1, argv=0x6c640b0,
main_closure=0x2aabad0 <ZCMain_main_closure>, rts_config=...) at
rts\RtsMain.c:64
#13 0x00000000004b4c75 in main ()
}}}
It seems that all `info` tables are messed up.
In `frame #4` the table contains very suspicious values:
{{{
(gdb) frame 4
#4 0x0000000002a7c245 in scavenge_static () at rts\sm\Scav.c:1747
1747 scavenge_fun_srt(info);
(gdb) p info
$3 = (const StgInfoTable *) 0x278dfb0 <c1Fi_info+88>
(gdb) pinfo info
$4 = {layout = {payload = {ptrs = 10697284, nptrs = 0}, bitmap = 10697284,
large_bitmap_offset = 10697284, __pad_large_bitmap_offset = 10697284,
selector_offset = 10697284}, type = 3, srt_bitmap = 1, code = 0x278dfb0
<c1Fi_info+88> ""}
}}}
Unfortunately my knowledge of GHC's `GC` is severely lacking at this
moment so I have no idea how to debug this effectively and without knowing
the commit that introduced it's rather slow going.
Any help or hints appreciated.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12501>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list