[GHC] #12622: Unboxed static pointers lead to missing SPT entries

GHC ghc-devs at haskell.org
Sun Sep 25 15:34:24 UTC 2016


#12622: Unboxed static pointers lead to missing SPT entries
-------------------------------------+-------------------------------------
           Reporter:  mboes          |             Owner:  facundominguez
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.1
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 I found what appears to be a regression following the merge of the new
 FloatOut based static pointers support. See github.com/mboes/bug-ptr-not-
 in-spt for a fully developed minimal example.

 It seems to be quite hard to trigger this bug:

 * I need to be using distributed-closure (not bare `StaticPtr`).
 * The static pointer needs to be defined in a separate module.
 * The static pointer must refer to a value with at least one polymorphic
 argument.
 * Compiler optimization level 1 needs to be turned on.

 At any rate, I wasn't able to trigger it without all conditions above
 being true. Initial investigations by facundominguez point to static
 pointer unpacking in distributed-closure as the culprit. Likely unpacked
 static pointers are no longer recognized as such by the FloatOut pass and
 therefore never floated to top-level, hence breaking a fundamental
 invariant about static pointers.

 This might explain why sometimes static pointers don't get added to the
 static pointer table (SPT), as in the above minimal example.

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


More information about the ghc-tickets mailing list