[GHC] #15449: Nondeterministic Failure on aarch64 with -jn, n > 1

GHC ghc-devs at haskell.org
Thu Feb 7 22:44:21 UTC 2019


#15449: Nondeterministic Failure on aarch64 with -jn, n > 1
-------------------------------------+-------------------------------------
        Reporter:  tmobile           |                Owner:  tmobile
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.10.1
       Component:  Compiler          |              Version:  8.4.3
      Resolution:                    |             Keywords:
Operating System:  Linux             |         Architecture:  aarch64
 Type of failure:  Compile-time      |            Test Case:
  crash or panic                     |
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by bgamari):

 tmobile, if you want something else to try you might try this patch. I
 really don't see how the current implementation can be correct; afterall,
 during a thunk update we need to make sure that the result is visible to
 other cores *before* we update the thunk. Reordering here would be quite
 bad.

 On the other hand, it seems like we would have seen this go wrong on SPARC
 far earlier than today.

 {{{#!diff
 diff --git a/rts/Updates.h b/rts/Updates.h
 index 1ba398bd35..412db99dda 100644
 --- a/rts/Updates.h
 +++ b/rts/Updates.h
 @@ -44,8 +44,8 @@
      W_ bd;                                                      \
                                                                  \
      OVERWRITING_CLOSURE(p1);                                    \
 -    StgInd_indirectee(p1) = p2;                                 \
      prim_write_barrier;                                         \
 +    StgInd_indirectee(p1) = p2;                                 \
      SET_INFO(p1, stg_BLACKHOLE_info);                           \
      LDV_RECORD_CREATE(p1);                                      \
      bd = Bdescr(p1);                                            \
 }}}

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


More information about the ghc-tickets mailing list