[GHC] #10298: Infinite loop when shared libraries are unavailable
GHC
ghc-devs at haskell.org
Tue Apr 14 15:21:14 UTC 2015
#10298: Infinite loop when shared libraries are unavailable
-------------------------------------+-------------------------------------
Reporter: snoyberg | Owner: simonmar
Type: bug | Status: new
Priority: normal | Milestone:
Component: Runtime System | Version: 7.10.1
Resolution: | Keywords:
Operating System: Linux | Architecture: x86_64
Type of failure: Runtime crash | (amd64)
Blocked By: | Test Case:
Related Tickets: | Blocking:
| Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by rwbarton):
I was able to reproduce the loop, but rather than copying `/usr/lib/x86_64
-linux-gnu/gconv/` into the chroot, I tried copying in `/usr/lib/locale/`
instead, and that was also sufficient to let the program run normally.
It's to be expected that a program built with GHC needs those locale
files, since String IO is locale-aware. Of course an infinite loop is not
so easy to debug, and it'd be nice to have an error message.
In fact the error status from `iconv_open` is being correctly checked, and
converted to an exception, which is then caught and displayed by the
default exception handler. The trouble is that the display of exceptions
is also locale-aware...
Curiously even an empty `main = return ()` triggers this behavior with
7.8.4, but it runs successfully on 7.10.1. I couldn't figure out why,
perhaps some change in the IO manager?
I don't have any good ideas about how to improve this situation. Maybe try
to set up the locale for IO at some point, catch the exception if it fails
and `barf()` rather than using regular IO to display the exception. But
when exactly?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10298#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list