Hi David!
On Sun, Oct 3, 2010 at 10:09 PM, David Kirkman dkirkman@ucsd.edu wrote:
I think I worked out the problem here: there are accesses to HashTables from unsynchronized get and put methods. Adding a 'synchronized' to the get/put methods in EqHashTable fixes this particular threading problem.
Ville told me through IRC he'll be playing with your patch a bit before committing, but let me express my excitement with the submission! Thanks! I'd have thought to be working to find the source of this issue for at least a few weeks. And it's already the case that we're going to have a great 0.23 release with Maxima support, our own generic class file writer, possibly support for the long form of DEFINE-METHOD-COMBINATION and now *this*!
When the example below fails, it looks likeEqHashTable.get is being called from Layout.getSlotIndex(LispObject slotName) (line 191), but I can't find a way to fix the problem by synchronizing on getSlotIndex or on the slotTable variable, perhaps there are direct get calls to the slotTable from someplace else?
Thanks again!
Bye,
Erik.