Calling strerror with a non-integer argument causes guile to hang. e.g.: (strerror 1.5)
It's a locking issue, which is solved by the following trivial patch: --- a/libguile/error.c +++ b/libguile/error.c @@ -121,10 +121,12 @@ SCM_DEFINE (scm_strerror, "strerror", 1, 0, 0, #define FUNC_NAME s_scm_strerror { SCM ret; + int errnum; scm_dynwind_begin (0); + errnum = scm_to_int (err); scm_i_dynwind_pthread_mutex_lock (&scm_i_misc_mutex); - ret = scm_from_locale_string (strerror (scm_to_int (err))); + ret = scm_from_locale_string (strerror (errnum)); scm_dynwind_end (); return ret;