X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fgencgc.c;h=6b2f6f7395ab7a1aa27f2ab72e5fb0b9c8531e51;hb=656f994cdddc89af3a99c8af266816b09879df4a;hp=b8df9f44e695fca67f72343bc963272bae1bd23c;hpb=cb3644aad47516ca6ad5c7c579dbc21df99417ab;p=sbcl.git diff --git a/src/runtime/gencgc.c b/src/runtime/gencgc.c index b8df9f4..6b2f6f7 100644 --- a/src/runtime/gencgc.c +++ b/src/runtime/gencgc.c @@ -1407,7 +1407,7 @@ sniff_code_object(struct code *code, unsigned displacement) { long nheader_words, ncode_words, nwords; void *p; - void *constants_start_addr, *constants_end_addr; + void *constants_start_addr = NULL, *constants_end_addr; void *code_start_addr, *code_end_addr; int fixup_found = 0; @@ -2135,6 +2135,7 @@ possibly_valid_dynamic_space_pointer(lispobj *pointer) } switch (widetag_of(start_addr[0])) { case UNBOUND_MARKER_WIDETAG: + case NO_TLS_VALUE_MARKER_WIDETAG: case CHARACTER_WIDETAG: #if N_WORD_BITS == 64 case SINGLE_FLOAT_WIDETAG: @@ -3621,14 +3622,11 @@ garbage_collect_generation(int generation, int raise) /* Scavenge the Lisp functions of the interrupt handlers, taking * care to avoid SIG_DFL and SIG_IGN. */ - for_each_thread(th) { - struct interrupt_data *data=th->interrupt_data; - for (i = 0; i < NSIG; i++) { - union interrupt_handler handler = data->interrupt_handlers[i]; - if (!ARE_SAME_HANDLER(handler.c, SIG_IGN) && - !ARE_SAME_HANDLER(handler.c, SIG_DFL)) { - scavenge((lispobj *)(data->interrupt_handlers + i), 1); - } + for (i = 0; i < NSIG; i++) { + union interrupt_handler handler = interrupt_handlers[i]; + if (!ARE_SAME_HANDLER(handler.c, SIG_IGN) && + !ARE_SAME_HANDLER(handler.c, SIG_DFL)) { + scavenge((lispobj *)(interrupt_handlers + i), 1); } } /* Scavenge the function list for INTERRUPT-THREAD. */