[GHC] #9673: aarch64 7.8.4, 7.10, 7.11: lib/ghc/bin/ghc-pkg --version does not output from subprocess

GHC ghc-devs at haskell.org
Sun Apr 19 05:40:51 UTC 2015


#9673: aarch64 7.8.4, 7.10, 7.11: lib/ghc/bin/ghc-pkg --version does not output
from subprocess
-------------------------------------+-------------------------------------
        Reporter:  juhpetersen       |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  high              |               Milestone:
       Component:  Compiler          |                 Version:  7.11
      Resolution:                    |                Keywords:
Operating System:  Linux             |            Architecture:  aarch64
 Type of failure:  Installing GHC    |               Test Case:
  failed                             |                Blocking:
      Blocked By:                    |  Differential Revisions:
 Related Tickets:                    |
-------------------------------------+-------------------------------------

Comment (by rwbarton):

 Interesting results. This seems to confirm that the issue is whether
 stdout is a tty. When stdout is redirected to a file (and thus not a tty),
 the stdout Handle will have BlockBuffering (see
 `GHC.IO.Handle.Internals.getCharBuffer`). Perhaps the output is being
 written to that buffer, but never flushed. (Whereas when stdout is a tty,
 the stdout Handle has LineBuffering so the output is flushed immediately.)

 `ghc-pkg --version` calls `exitWith ExitSuccess`, so I think stdout is
 supposed to be flushed by `GHC.TopHandler.flushStdHandles`. I'm very
 suspicious of the two `ioctl` syscalls, where there is only one on x86_64.
 It looks as though the stdout Handle CAF (which is a `unsafePerformIO $ do
 { ... ; mkHandle ... }`) has been copied by the dynamic loader and the
 version referred to by the executable has a separate identity from the
 version referred to internally by libHSbase in
 `GHC.TopHandler.flushStdHandles`.

 On Linux x86_64 I see these references to the stdout Handle in ghc-pkg:
 {{{
 rwbarton at morphism:/tmp$ objdump -DR ~/lib/ghc-7.8.4/bin/ghc-pkg | grep
 stdout
                         6407a0: R_X86_64_GLOB_DAT
 base_GHCziIOziHandleziFD_stdout_closure
                         6493a0: R_X86_64_64
 base_GHCziIOziHandleziFD_stdout_closure
                         6495b8: R_X86_64_64
 base_GHCziIOziHandleziFD_stdout_closure
                         649968: R_X86_64_64
 base_GHCziIOziHandleziFD_stdout_closure
                         649ce0: R_X86_64_64
 base_GHCziIOziHandleziFD_stdout_closure
                         649e30: R_X86_64_64
 base_GHCziIOziHandleziFD_stdout_closure
 }}}
 What is the corresponding output on your ARM system?

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


More information about the ghc-tickets mailing list