Some minor updates: 2008/11/11 Linas Vepstas <[EMAIL PROTECTED]>: > > My stack below. > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 0xf5333b90 (LWP 20587)] > 0xf7711ce3 in scm_mark_locations (x=0xf5333110, n=4294966782) at gc-mark.c:435 > 435 SCM obj = * (SCM *) &x[m]; > Current language: auto; currently c > (gdb) bt > #0 0xf7711ce3 in scm_mark_locations (x=0xf5333110, n=4294966782) > at gc-mark.c:435 > #1 0xf7766a12 in scm_threads_mark_stacks () at threads.c:1375 > #2 0xf7711d38 in scm_mark_all () at gc-mark.c:82 > #3 0xf7710d33 in scm_i_gc (what=0xf778602e "cells") at gc.c:598
My current code reproduces this fairly readily, I am seeing it many dozens/hundreds of times a day. I tweaked guile to check that the stack bounds are in order, and to print an error message when they are, and then to just troop on -- and so I see dozens/hundreds of prints. When the stack bounds are reversed, the difference is *always* 58 bytes; and in fact, the two bad stack bounds are always the same. It appears to happen *only* when I have multiple threads all trying to define functions at the same time, it never happens when one thread goes off to do some heavy computing. --linas
