[GHC] #11340: linker_unload test fails on ARM

GHC ghc-devs at haskell.org
Sat Jan 2 23:40:37 UTC 2016


#11340: linker_unload test fails on ARM
-------------------------------------+------------------------------
        Reporter:  bgamari           |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.0.1
       Component:  Compiler          |              Version:  7.10.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:  arm
 Type of failure:  Runtime crash     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+------------------------------

Comment (by bgamari):

 Well, the good news is that I realized the source of the trouble. The bad
 news is I don't really know what to do about it. This test loads and
 unloads an object file dozens of times in succession. On ARM the linker
 builds a set of "symbol extras" which we use to relocate jumps  which,
  * overflow the branch instructions' immediate field width (the ARM `b`
 and `bl` instructions are PC-relative with a signed 24-bit range)
  * require Thumb/ARM switch

 As it turns out, every time we load/unload the symbol extras region gets a
 bit farther away from the code we are loading. After 85 or so iterations
 the gap grows large enough that we can't jump from the code to the symbol
 extra (in particular it seems like the unlucky call is to
 `foreignExportStablePtr`).

 This is an unfortunate state of affairs. It would help if we were a bit
 more thorough in cleaning up while unloading. It used to be that we didn't
 unload code at all when "unloading" (see #8039) but this has since been
 fixed. Perhaps we still aren't letting go of symbol extras?

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


More information about the ghc-tickets mailing list