Subject: Re: sigaction hangs

From: Matt Wette <[email-masked]>
Date: Sat, 15 Dec 2018 08:58:51 -0800

On 12/15/18 8:46 AM, Matt Wette wrote:
> -s seems to end up using load-in-vicinity: I can re-create this way:
>
> mwette$ guile -L `pwd` -c '(load-in-vicinity (getcwd) "foo.scm")'
> ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
> ;;;       or pass the --no-auto-compile argument to disable.
> ;;; compiling /home/mwette/proj/guile/bugs-guile/32367/foo.scm
> setting SIGCHILD to SIG_DFL...
> ^C
>

And using `-l' to load scsh.scm fixes the problem:

mwette$ guile -L `pwd` -l scsh.scm -c '(load-in-vicinity (getcwd) 
"foo.scm")'setting SIGCHILD to SIG_DFL...
setting SIGCHILD to SIG_DFL...done
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /home/mwette/proj/guile/bugs-guile/32367/foo.scm
;;; compiled 
/home/mwette/.cache/guile/ccache/2.2-LE-8-3.A/home/mwette/proj/guile/bugs-guile/32367/foo.scm.go
mwette $

An update from 2.2.3 to 2.2.4 adds call-with-module-autoload-lock which 
places a
mutex around autoload.  This looks like one place to start digging. See 
ice-9/threads.scm:

(set! (@ (guile) call-with-module-autoload-lock)
   (let ((mutex (make-mutex 'recursive)))
     (lambda (thunk)
       (with-mutex mutex
         (thunk)))))