Timothy Sample writes: > It turns out that Guile cannot start its signal handling thread during > module resolution. I should add that merely using 'call-with-new-thread' in a module being imported is enough to trigger deadlock. > A simple fix would be to use the underlying ‘setter’ generic directly: > > (setter thread-join-data thread (cons cv mutex)) > > It’s hard to read (IMO), but maybe with a comment it’s good enough. Here’s the patch. I’m not super familiar with Guile’s threading code, so maybe this quick fix is a little too quick. That is, maybe it would be better to avoid object properties altogether, or maybe we could make other changes to the way that the new thread signals the calling thread. We could also think through the usage of the ‘autoload’ mutex. The benefit of this patch is that it is (almost) exactly the same as the old code, so it’s unlikely to result in nasty surprises.