From a000e5c38d50883c517214776dda36f4e478ebad Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 8 Jan 2017 13:02:56 +0100 Subject: Enable interrupts only when running thread body * libguile/threads.c (really_launch): Start threads with asyncs blocked. * module/ice-9/threads.scm (call-with-new-thread): Unblock asyncs once we have the bookkeeping sorted out. Don't use with-continuation-barrier; it's not needed. Print nice thread backtraces. --- libguile/threads.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'libguile/threads.c') diff --git a/libguile/threads.c b/libguile/threads.c index b46a71b42..64bef8c89 100644 --- a/libguile/threads.c +++ b/libguile/threads.c @@ -732,6 +732,9 @@ typedef struct { static void * really_launch (void *d) { + scm_i_thread *t = SCM_I_CURRENT_THREAD; + /* The thread starts with asyncs blocked. */ + t->block_asyncs++; SCM_I_CURRENT_THREAD->result = scm_call_0 (((launch_data *)d)->thunk); return 0; } -- cgit v1.2.3