On Feb 10, 2011, at 17:19, Andy Wingo wrote: > Hey Ken, > > I got tired of seeing your mail marked as starred in my inbox, so I > decided to take a look at it ;-)
Thanks! :-) I'm sorry I haven't had time in a while to investigate more. >> symbols.c: I don't think 'symbols' is handled safely. But this code is >> all starting to run together in my mind. :-) > > I think I fixed this one a month ago or so. Hmm... maybe. It looks to me like it'll probably be okay, *if* you assume that updates aren't seen out-of-order by another thread. If updates can be seen out of order, then the newly allocated vector in scm_i_rehash may still be seen as having garbage values in its data slots by the time SCM_SET_HASHTABLE_VECTOR makes it visible to other threads that aren't using any synchronization primitives. BTW, I like this writeup: http://www.cs.umd.edu/~pugh/java/memoryModel/AlphaReordering.html . It shows how (on Alpha, with its weak memory ordering model) even an explicit memory barrier in the writing thread isn't enough to guarantee that a reading thread in another CPU will see changes "in order". > At this point I got tired. But sending this mail to the list will > requeue this work, so hey... Fair enough. :) Ken