~ chicken-core (chicken-5) df93ff11474ec63f4b8b0cd49b7842bef5cdc894
commit df93ff11474ec63f4b8b0cd49b7842bef5cdc894 Author: Peter Bex <peter@more-magic.net> AuthorDate: Mon Jan 1 17:15:12 2018 +0100 Commit: Peter Bex <peter@more-magic.net> CommitDate: Mon Jan 1 17:15:12 2018 +0100 Fix a segfault when profiling CHICKEN itself The trace buffer will be filled during initialization, before the current thread symbol is set up yet. Then, when we look up the thread identifier, this may fail. Instead, we'll store #f as the identifier in such cases. diff --git a/runtime.c b/runtime.c index 2cb1988b..ab411903 100644 --- a/runtime.c +++ b/runtime.c @@ -4448,7 +4448,7 @@ C_regparm void C_fcall C_trace(C_char *name) trace_buffer_top->cooked1 = C_SCHEME_FALSE; trace_buffer_top->cooked2 = C_SCHEME_FALSE; thread = C_block_item(current_thread_symbol, 0); - trace_buffer_top->thread = C_thread_id(thread); + trace_buffer_top->thread = C_and(C_blockp(thread), C_thread_id(thread)); ++trace_buffer_top; }Trap