Hi, Currently ‘primitive-load’ opens files without O_CLOEXEC:
port = scm_open_file_with_encoding (filename, scm_from_latin1_string ("r"), SCM_BOOL_T, /* guess_encoding */ scm_from_latin1_string ("UTF-8")); We should fix that; here’s an example where it shows: --8<---------------cut here---------------start------------->8--- $ guix shell bash -- sh -c 'ls -l /proc/$$/fd' total 0 lrwx------ 1 ludo users 64 Sep 3 21:20 0 -> /dev/pts/0 lrwx------ 1 ludo users 64 Sep 3 21:20 1 -> /dev/pts/0 lrwx------ 1 ludo users 64 Sep 3 21:20 2 -> /dev/pts/0 lr-x------ 1 ludo users 64 Sep 3 21:20 3 -> /proc/9563/fd lr-x------ 1 ludo users 64 Sep 3 21:20 5 -> /gnu/store/4qbqaa4dgr2fwjjs9i2naqrd0djrcnw3-guix-command $ head -1 $(type -P guix) #!/gnu/store/9z95jms1r801z1kxpiq5xw594cxaw5jx-guile-wrapper/bin/guile --no-auto-compile --8<---------------cut here---------------end--------------->8--- For a proper fix, one possibility would be to first augment ‘scm_i_mode_to_open_flags’ to recognize some letter for O_CLOEXEC. In glibc, fopen(3) uses “e” for that. Thoughts? Ludo’.