I have a bit more information about this. In particular: I'm able to reproduce this using chroot (no Docker required), and it's reproducing with a dynamically linked executable too. Steps I used to reproduce:1. Write a minimal "foo.hs" containing `main = putStrLn "Hello World"`2. Compile that executable and put it in an empty directory3. Run `ldd` on it and copy all necessary libraries inside that directory4. Run `sudo strace -o log.txt . /foo`I've uploaded the logs to:Note that, due to size of the output, I killed the process just a few seconds after starting it, but when I let the output run much longer, I didn't see any difference in the results. I'll continue poking at this a bit, but most likely I'll open a GHC Trac ticket about it later today.On Tue, Apr 14, 2015 at 12:39 AM Albert Y. C. Lai <trebla@vex.net> wrote:I wonder whether you already know the following, and whether it is
relevant to begin with. (Plus, my knowledge is fairly sketchy.)
Even though you statically link glibc, its code will, at run time,
dlopen a certain part of glibc.
Why: To provide a really uniform abstraction layer over user account
queries, e.g., man 3 getpwnam, regardless of whether the accounts are
from /etc/passwd, LDAP, or whatever.
Therefore, during run time, glibc first reads some config files of the
host to see what kind of user account database the host uses. If it's
/etc/passwd, then dlopen the implementation of getpwnam and friends for
/etc/passwd; else, if it's LDAP, then dlopen the implementation of
getpwnam and friends for LDAP; etc etc.
So that later when you call getpwnam, it will happen to "do the right
thing".
This demands the required *.so files to be accessible during run time.
Moreoever, if you statically link glibc, this also demands the required
*.so files to version-match the glibc you statically link.
(It is the main reason why most people give up on statically linking glibc.)
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe