[Openmcl-devel] bug with clx
gb at clozure.com
Mon Feb 9 04:59:27 UTC 2004
On Sun, 8 Feb 2004, Robert Sedgewick wrote:
> I'm not sure if the version of clx on the clozure ftp site (version
> 030512) is current or supported, but I think I found a problem with it.
> The just-say-lisp example does not work (infinite loop) with the
> #+openmcl-native-threads specialized version of the conditional-store
> macro in dependent.lisp. If I instead use the non-native thread
> specific conditional-store macro than it works. I think this is
> somewhat less efficient, but I don't know the openmcl internals well
> enough to get the native thread specific version to work....
> BTW: I'm using openmcl version 0.14-031220.
The bug is way down in some code that tries to find the address of the
thread-specific binding of a special variable. (This was fixed a few
versions ago, but the fix got partially clobbered in 031220).
The fix hadn't been committed to CVS until a minute ago.
All of this complexity in CONDITIONAL-STORE is there so that it can
be implemented in terms of PPC instructions that implement appropriate
bus locking. It could also be implemented in terms of a global
"conditional store lock", to ensure that only one thread was able to
do a CONDITIONAL-STORE lock at a time; that might be OK for CLX, but
it wouldn't scale very well.
The non-native threads version just does (WITHOUT-INTERRUPTS (SETF ...));
that can't work reliably in general.
There should be a new OpenMCL release Real Soon Now (honest), and there
should be a new CLX to go with it (to hide all of the gory CONDITIONAL-STORE
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
More information about the Openmcl-devel