With some printf() debugging:
.......fatal error encountered in SBCL pid 8073 tid 18192: bad startup info: 0x10035f0020 (nil)
--- a/src/runtime/thread.c +++ b/src/runtime/thread.c @@ -562,6 +562,7 @@ void* new_thread_trampoline(void* arg) struct vector* startup_info = VECTOR(lispthread->startup_info); // 'lispthread' is pinned gc_assert(header_widetag(startup_info->header) == SIMPLE_VECTOR_WIDETAG); lispobj startfun = startup_info->data[0]; // 'startup_info' is pinned + if (!functionp(startfun)) lose("bad startup info: %p %p\n", startup_info, startfun); gc_assert(functionp(startfun));
How is this possible?
With some printf() debugging:
.......fatal error encountered in SBCL pid 8073 tid 18192:
bad startup info: 0x10035f0020 (nil)
--- a/src/runtime/ thread. c thread. c trampoline( void* arg) lispthread- >startup_ info); // 'lispthread' is pinned assert( header_ widetag( startup_ info->header) == SIMPLE_ VECTOR_ WIDETAG) ; info->data[ 0]; // 'startup_info' is pinned startfun) ) lose("bad startup info: %p %p\n", startup_info, startfun); assert( functionp( startfun) );
+++ b/src/runtime/
@@ -562,6 +562,7 @@ void* new_thread_
struct vector* startup_info = VECTOR(
gc_
lispobj startfun = startup_
+ if (!functionp(
gc_
How is this possible?