[Openmcl-devel] bug with clx

Gary Byers gb at clozure.com
Mon Feb 9 04:59:27 UTC 2004



On Sun, 8 Feb 2004, Robert Sedgewick wrote:

> Hi,
>
> 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).

See:
<http://clozure.com/pipermail/bug-openmcl/2004-January/000095.html>

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
details.)


> Thanks,
> Robbie
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>
>



More information about the Openmcl-devel mailing list