[GHC] #15446: compiling files in ghci on MacOS eventually results in malformed mach-o: load commands size (32800) > 32768

GHC ghc-devs at haskell.org
Fri Jul 27 18:00:27 UTC 2018


#15446: compiling files in ghci on MacOS eventually results in malformed mach-o:
load commands size (32800) > 32768
-------------------------------+--------------------------------------
        Reporter:  George      |                Owner:  (none)
            Type:  bug         |               Status:  new
        Priority:  normal      |            Milestone:  8.8.1
       Component:  GHCi        |              Version:  8.4.3
      Resolution:              |             Keywords:
Operating System:  MacOS X     |         Architecture:  x86_64 (amd64)
 Type of failure:  GHCi crash  |            Test Case:
      Blocked By:              |             Blocking:
 Related Tickets:              |  Differential Rev(s):
       Wiki Page:              |
-------------------------------+--------------------------------------
Description changed by George:

Old description:

> compiling files in ghci on MacOS eventually results in a panic with
> error:
>
> {{{
> malformed mach-o: load commands size (32800) > 32768
> }}}
>
> I can reproduce this problem by repeatedly compiling (and loading) a file
> and then deleting the .o file. I understand that this an OS limitation
> but why does repeatedly doing the same thing results in this? i.e. why
> don't I get it on the first compile (and load). It seems that successive
> loads are being appended to something eventually resulting in the error.
>
> To duplicate:
>
> ghci -ignore-dot-ghci -fobject-code < ghci.sh >& ghci.out &
>
> If you look for the first "panic" in the .out file you'll see
>
> {{{
> Prelude Main> ghc: panic! (the 'impossible' happened)
>   (GHC version 8.6.0.20180714 for x86_64-apple-darwin):
>         Loading temp shared object failed:
> dlopen(/var/folders/9b/rh4y2gy92hgdb6ktv4df1jv00000gn/T/ghc55569_0/libghc_2084.dylib,
> 5): no suitable image found.  Did find:
> /var/folders/9b/rh4y2gy92hgdb6ktv4df1jv00000gn/T/ghc55569_0/libghc_2084.dylib:
> malformed mach-o: load commands size (32800) > 32768
> /var/folders/9b/rh4y2gy92hgdb6ktv4df1jv00000gn/T/ghc55569_0/libghc_2084.dylib:
> stat() failed with errno=25
> }}}
>
> The critical part being
> {{{
> malformed mach-o: load commands size (32800) > 32768
> }}}
>
> My understanding from https://stackoverflow.com/questions/44902695/too-
> many-commands-dyld-message-malformed-mach-o-load-commands-size is that
> this has to do with sizeofcmds but if I understand the output of otool 0l
> this is only 512 so I don't understand what is causing the errror.
>
> {{{
>  otool -l c.o|head
> c.o:
> Mach header
>       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds
> flags
>  0xfeedfacf 16777223          3  0x00           1     4        512
> 0x00002000
> }}}
>
> This is irritating but perhaps the priority should be low rather than
> normal.

New description:

 compiling files in ghci on MacOS eventually results in a panic with error:

 {{{
 malformed mach-o: load commands size (32800) > 32768
 }}}

 I can reproduce this problem by repeatedly compiling (and loading) a file
 and then deleting the .o file. I understand that this an OS limitation but
 why does repeatedly doing the same thing results in this? i.e. why don't I
 get it on the first compile (and load). It seems that successive loads are
 being appended to something eventually resulting in the error.

 To duplicate:

 ghci -ignore-dot-ghci -fobject-code < ghci.sh >& ghci.out &

 If you look for the first "panic" in the .out file you'll see

 {{{
 Prelude Main> ghc: panic! (the 'impossible' happened)
   (GHC version 8.6.0.20180714 for x86_64-apple-darwin):
         Loading temp shared object failed:
 dlopen(/var/folders/9b/rh4y2gy92hgdb6ktv4df1jv00000gn/T/ghc55569_0/libghc_2084.dylib,
 5): no suitable image found.  Did find:
 /var/folders/9b/rh4y2gy92hgdb6ktv4df1jv00000gn/T/ghc55569_0/libghc_2084.dylib:
 malformed mach-o: load commands size (32800) > 32768
 /var/folders/9b/rh4y2gy92hgdb6ktv4df1jv00000gn/T/ghc55569_0/libghc_2084.dylib:
 stat() failed with errno=25
 }}}

 The critical part being
 {{{
 malformed mach-o: load commands size (32800) > 32768
 }}}

 My understanding from https://stackoverflow.com/questions/44902695/too-
 many-commands-dyld-message-malformed-mach-o-load-commands-size is that
 this has to do with sizeofcmds but if I understand the output of otool -l
 this is only 512 so I don't understand what is causing the errror.

 {{{
  otool -l c.o|head
 c.o:
 Mach header
       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds
 flags
  0xfeedfacf 16777223          3  0x00           1     4        512
 0x00002000
 }}}

 This is irritating but perhaps the priority should be low rather than
 normal.

--

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


More information about the ghc-tickets mailing list