[Openmcl-devel] planned trunk instability

Gary Byers gb at clozure.com
Mon Sep 22 18:08:58 PDT 2008

I think that 15 days counts as "a few", doesn't it ?

As far as I know, we're through making changes to the trunk that
require extensive bootstrapping, at least for a while.  Changes
that have occurred recently include:

- "nearly lock free" hash tables (whose implementation is described at


    ).  These are not yet enabled by default; a hash table created
    via (make-hash-table ... :LOCK-FREE T) allows concurrent read-write
    access to the resulting hash-table from multiple threads without
    locking overhead for most operations.  (If I understand correctly,
    locking does come into play when the hash table needs to be
    rehashed due to growth or address-based key movement.)  So far,
    the performance results seem to be encouraging, and I think that
    the plan is to make :LOCK-FREE T the default for shared hash-tables
    (and to try to descibe any usage patterns where it wouldn't be
    an appropriate default better than I'm doing here.)  (Thread-private
    hash-tables - created with :SHARED NIL - are likely to still be
    faster when they're appropriate; they already avoid locking
    overhead and don't need to do the memory-synchronization stuff
    that shared lock-free tables need to do on writes.)

-  the win64 port (which had been on its own branch and was badly
    out of synch with the trunk) is now in the trunk and starting
    to approach usability.

-  a 32-bit x86 Linux port has been added; it and the 64-bit x86
    Linux port have been merged into a new tree at:


    The old 64-bit only Linux x8664 tree at :...trunk/linuxx8664/ccl
    should be considered "deprecated"; if you've been using it, you
    can do:

shell> cd ccl
shell> svn update      # get in synch with the old linuxx8664 tree
shell> svn switch http://svn.clozure.com/publicsvn/openmcl/trunk/linuxx86/ccl

- both the Darwin and Linux x8632 ports are built with "gc integrity
   checking enabled; this basically means that every time the EGC runs
   (which is typically very often ...), it's preceded and followed by a
   full scan of the entire heap which tries to detect evidence of memory
   corruption.  Each of these full scans usually takes much longer than
   an EGC invocation does and run as often as the EGC does, so code
   that does lots of consing (incidental or otherwise) spends a large
   percentage of its time checking for evidence of memory corruption.

   (When the integrity checks fail, they do so by breaking into
   the kernel debugger with a cryptically-phrased message like
   "pointer at #x12345 has bogus header ..." or something equally
   obscure.  There isn't a whole lot that you can do at this point
   besides report the failure; a reproducible failure is ideal,
   if you can generate one.)

   It's been a while since we've seen such an (x8632-specific) failure,
   and it's tempting to remove the options which force integrity
   checks.  The more code that's run successfully with the integrity
   checks enabled the more confident we can be that they're no longer
   necessary.  (They do tend to catch memory-corruption problems
   soon after whatever causes them occurs, which make them easier
   to find and fix than they would be after the GC has chewed on
   things for a while.)

- The ObjC bridge still doesn't work on darwinx8632, but it's
   getting closer.  Honest.

- The version number that keeps kernels and heap images in synch
   with each other was incremented (so old images won't run with
   new kernels and vice versa) and new kernels/images were checked
   in for all platforms.  The FASL file version number also changed
   (so old fasls won't work with new images and vice versa.)

As far as I can see, we should be back to "some degree of volatility
in the trunk, but not total chaos ..." for the moment, at least.

On Sun, 7 Sep 2008, Gary Byers wrote:

> [So much better than "unplanned trunk instability".]
> I want to try to merge in a bunch of changes from the win64 branch and
> make other changes to the trunk over the next few days.  Some of these
> changes may introduce bugs/bootstrapping problems/other instabilities,
> and it may take a few days (for some value of "a few") for the dust to
> settle.
> I'll try to remember to send an "all clear" message at that point.
> Until that happens, it's probably wise to avoid updating from the
> svn trunk.
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel

More information about the Openmcl-devel mailing list