Linas Vepstas escreveu: > 2008/11/12 Linas Vepstas <[EMAIL PROTECTED]>: > >> Today, I got a new crash. I have multiple threads, which >> are doing nothing but a bunch of define's, in parallel. >> (They're loading scheme code from various files). > > Studying the code just a little bit more, this looks like > a dopey and pointless error check within guile, > specifically, at libguile/throw.c line 695. > Removing it seems to result in a runable system.
Re -the subject- : I looked at the evaluator code from a threading perspective a few months back, and come to the conclusion that it is totally broken. The memoization code rewrites expressions without locking or atomicity, and if you have two threads memoizing (ie. executing the same code for the 1st time), you will have unpredictable effects. -- Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen