Your patch does solve this issue, but I'm not 100% why the problem
occurs in the first place, as the lock should have been unlocked when
the throw occurred.
If I catch the wrong type error explicitly, then there is no problem.
scheme@(guile-user)> (catch #t (lambda () (strerror 1.5)) list)
$1 = (wrong-type-arg #f "Wrong type (expecting ~A): ~S" ("exact integer" 1.5)
(1.5))
My thinking is that the a pre-unwind handler in the repl tries to lock
the same mutex, but I haven't looked into this deeply enough.
--
Ian Price -- shift-reset.com
"Programming is like pinball. The reward for doing it well is
the opportunity to do it again" - from "The Wizardy Compiled"