[GHC] #11978: running a profiled build of shake test suite with rts args +RTS -hb -N10 triggers SIGSEGV

GHC ghc-devs at haskell.org
Sat Apr 30 23:18:42 UTC 2016


#11978: running a profiled build of shake test suite with rts args  +RTS -hb -N10
triggers SIGSEGV
---------------------------------+----------------------------------------
        Reporter:  carter        |                Owner:
            Type:  bug           |               Status:  patch
        Priority:  highest       |            Milestone:
       Component:  Compiler      |              Version:  8.0.1
      Resolution:                |             Keywords:
Operating System:  MacOS X       |         Architecture:  Unknown/Multiple
 Type of failure:  None/Unknown  |            Test Case:
      Blocked By:                |             Blocking:
 Related Tickets:  #4820         |  Differential Rev(s):  phab:D2159
       Wiki Page:                |
---------------------------------+----------------------------------------

Comment (by erikd):

 On IRC @simonmar said that in this function `overwritingClosure` the
 closure type should not be `WHITEHOLE`. The backtrace looks like:

 {{{
 Program received signal SIGSEGV, Segmentation fault.
 [Switching to Thread 0x7fffca7fc700 (LWP 27422)]
 executeMessage (cap=cap at entry=0x14861a0, m=0x20022b340) at
 rts/Messages.c:104
 104                 doneWithMsgThrowTo(t);
 (gdb) bt
 #0  executeMessage (cap=cap at entry=0x14861a0, m=0x20022b340) at
 rts/Messages.c:104
 #1  0x0000000000f47834 in scheduleProcessInbox (pcap=<optimized out>) at
 rts/Schedule.c:1005
 #2  scheduleFindWork (pcap=<optimized out>) at rts/Schedule.c:616
 #3  schedule (initialCapability=<optimized out>,
 task=task at entry=0x7fffc4000910) at rts/Schedule.c:274
 #4  0x0000000000f490dc in scheduleWorker (cap=<optimized out>,
 task=0x7fffc4000910) at rts/Schedule.c:2382
 #5  0x00007ffff75b6454 in start_thread (arg=0x7fffca7fc700) at
 pthread_create.c:334
 #6  0x00007ffff6d72eed in clone () at
 ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
 }}}

 The call path seems to be `scheduleProcessInbox` gets the next message,
 passes it to `executeMessage` which calls `throwToMsg` on it which returns
 `THROWTO_SUCCESS`, and then passes the message to `doneWithMsgThrowTo`
 which then passes it to `overwritingClosure`.

 Reading @ezyang's paper http://ezyang.com/jfp-ghc-rts-draft.pdf suggests
 that yes indeed this code path should not be executed when the closure
 type is `WHITEHOLE`.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11978#comment:14>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list