1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-01 20:30:28 +02:00

Fix segfault in thread_mark

* libguile/threads.c (thread_mark): There is a window in which the
  thread has a handle but doesn't yet have the set of pointerless
  freelists, so don't unconditionally dereference
  t->pointerless_freelists.
This commit is contained in:
Andy Wingo 2014-02-21 14:42:24 +01:00
parent c53d0f01dd
commit c65ea594e9

View file

@ -100,6 +100,7 @@ thread_mark (GC_word *addr, struct GC_ms_entry *mark_stack_ptr,
but GC doesn't know to trace them (as they are pointerless), so we but GC doesn't know to trace them (as they are pointerless), so we
need to do that here. See the comments at the top of libgc's need to do that here. See the comments at the top of libgc's
gc_inline.h. */ gc_inline.h. */
if (t->pointerless_freelists)
{ {
size_t n; size_t n;
for (n = 0; n < SCM_INLINE_GC_FREELIST_COUNT; n++) for (n = 0; n < SCM_INLINE_GC_FREELIST_COUNT; n++)