This is embarrassing: I used the wrong executable in connection with the core dump. With the matching executable, the coredump makes a lot more sense:
#0 0x00000000 in ?? () #1 0x0804aee0 in Smob_base<Family>::mark_trampoline (arg=0x9fbb000) at smobs.tcc:34 #2 0xb761b2da in ?? () from /usr/lib/libguile-2.0.so.22 #3 0xb72751f8 in GC_mark_from () from /usr/lib/i386-linux-gnu/libgc.so.1 #4 0xb72766ca in GC_mark_some () from /usr/lib/i386-linux-gnu/libgc.so.1 #5 0xb726cd16 in GC_stopped_mark () from /usr/lib/i386-linux-gnu/libgc.so.1 #6 0xb726d730 in GC_try_to_collect_inner () from /usr/lib/i386-linux-gnu/libgc.so.1 #7 0xb726e12a in GC_collect_or_expand () from /usr/lib/i386-linux-gnu/libgc.so.1 #8 0xb726e2b1 in GC_allocobj () from /usr/lib/i386-linux-gnu/libgc.so.1 #9 0xb72731a4 in GC_generic_malloc_inner () from /usr/lib/i386-linux-gnu/libgc.so.1 #10 0xb72732be in GC_generic_malloc () from /usr/lib/i386-linux-gnu/libgc.so.1 #11 0xb761b81e in scm_i_new_smob () from /usr/lib/libguile-2.0.so.22 #12 0x0804985a in scm_new_smob (tc=7039, data=158987224) at /usr/include/guile/2.0/libguile/smob.h:91 #13 0x0804a6fc in Smob_base<Family>::register_ptr (p=0x979f3d8) at smobs.tcc:53 #14 0x0804a03d in Smob<Family>::unprotected_smobify_self (this=0x979f3dc) at smobs.hh:273 #15 0x08049a73 in Smob<Family>::smobify_self (this=0x979f3dc) at smobs.hh:286 #16 0x0804934d in Family::Family (this=0x979f3d8, totals=0, branch=2) at test.cc:30 #17 0x0804938f in Family::Family (this=0x98b7c98, totals=3, branch=2) at test.cc:35 #18 0x0804938f in Family::Family (this=0x979e598, totals=8, branch=2) at test.cc:35 #19 0x0804938f in Family::Family (this=0x98b65c8, totals=17, branch=2) at test.cc:35 #20 0x0804938f in Family::Family (this=0x9934d78, totals=37, branch=2) at test.cc:35 #21 0x0804938f in Family::Family (this=0x99377c8, totals=76, branch=2) at test.cc:35 #22 0x0804938f in Family::Family (this=0x96921e0, totals=154, branch=2) at test.cc:35 #23 0x0804938f in Family::Family (this=0xa0c3998, totals=311, branch=2) at test.cc:35 #24 0x0804938f in Family::Family (this=0x9d0cc88, totals=623, branch=2) at test.cc:35 #25 0x0804938f in Family::Family (this=0x9b8b0a8, totals=1248, branch=2) at test.cc:35 #26 0x0804938f in Family::Family (this=0x9e84808, totals=2498, branch=2) at test.cc:35 #27 0x0804938f in Family::Family (this=0x9bf3d48, totals=4998, branch=2) at test.cc:35 #28 0x0804938f in Family::Family (this=0x9d05de8, totals=9998, branch=2) at test.cc:35 #29 0x0804938f in Family::Family (this=0x9b8dcb8, totals=19999, branch=2) at test.cc:35 #30 0x080495e7 in workload (avv=0xbfca7aa4) at test.cc:71 #31 0xb75b7dfd in ?? () from /usr/lib/libguile-2.0.so.22 #32 0xb76418e7 in ?? () from /usr/lib/libguile-2.0.so.22 #33 0xb761afb9 in ?? () from /usr/lib/libguile-2.0.so.22 #34 0xb7659f20 in ?? () from /usr/lib/libguile-2.0.so.22 #35 0xb765a539 in ?? () from /usr/lib/libguile-2.0.so.22 #36 0xb75c24f3 in scm_call_4 () from /usr/lib/libguile-2.0.so.22 #37 0xb7641acf in scm_catch_with_pre_unwind_handler () from /usr/lib/libguile-2.0.so.22 #38 0xb7641bd4 in scm_c_catch () from /usr/lib/libguile-2.0.so.22 #39 0xb75b85d1 in ?? () from /usr/lib/libguile-2.0.so.22 #40 0xb75b86d3 in scm_c_with_continuation_barrier () from /usr/lib/libguile-2.0.so.22 #41 0xb763ef7e in ?? () from /usr/lib/libguile-2.0.so.22 #42 0xb72782c1 in GC_call_with_stack_base () from /usr/lib/i386-linux-gnu/libgc.so.1 #43 0xb763f3e6 in scm_with_guile () from /usr/lib/libguile-2.0.so.22 #44 0x080496c5 in main (ac=4, av=0xbfca7aa4) at test.cc:85 (gdb) So the core indeed occurs when trying to call scm_gc_mark on a smob no longer (or not yet?) associated with a valid structure in memory, in a garbage collection apparently triggered during normal allocation of smob data. Sorry for the nonsensical core dump previously. -- David Kastrup