X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fthread.c;h=262e64283fbdce3a374dc1546d9f377b1e97ca72;hb=b43b6e70ce48d959d77f7f56be9d11aa101fdd7d;hp=6d5ddaa6c0e8fe891175ff3a63ec3bc0aa543cf4;hpb=1600081cf1b71b3d0e2e40de1c1c124a3a4fd40c;p=sbcl.git diff --git a/src/runtime/thread.c b/src/runtime/thread.c index 6d5ddaa..262e642 100644 --- a/src/runtime/thread.c +++ b/src/runtime/thread.c @@ -224,6 +224,7 @@ new_thread_trampoline(struct thread *th) { lispobj function; int result, lock_ret; + FSHOW((stderr,"/creating thread %lu\n", thread_self())); function = th->no_tls_value_marker; th->no_tls_value_marker = NO_TLS_VALUE_MARKER_WIDETAG; @@ -245,6 +246,9 @@ new_thread_trampoline(struct thread *th) gc_assert(lock_ret == 0); result = funcall0(function); + + /* Block GC */ + block_blockable_signals(); th->state=STATE_DEAD; /* SIG_STOP_FOR_GC is blocked and GC might be waiting for this @@ -399,6 +403,8 @@ create_thread_struct(lispobj initial_function) { } th->interrupt_data->pending_handler = 0; th->no_tls_value_marker=initial_function; + + th->stepping = NIL; return th; }