Re: sbcl build host breakage

Gary Byers <[email protected]> Thu, 8 Sep 2005 11:31:01 -0600 (MDT)
Newsgroups gmane.lisp.openmcl.bugs
Message-ID <[email protected]>

On Thu, 8 Sep 2005, bryan o'connor wrote:

> openmcl fails as build host for sbcl again.
>
> a hash table returns a negative hash-table-count that fails
> an assert in close-fasl-output (src/compiler/dump.lisp).

PUTHASH needs to increment (NHASH.COUNT HASH) if it replaces
a deleted entry with a new key/value pair.

Right around line 772 of l0-hash.lisp, just before the comment
";; Adjust deleted count", it should do:

  (incf (nhash.count hash)) ; or some variant

A simpler test:

(let* ((hash (make-hash-table)))
   (dotimes (i 100)
     (setf (gethash i hash) i))
   (format t "~&after additions, count should be 100, is ~d"
             (hash-table-count hash))
   (remhash 17 hash)
   (format t "~&after deletion, count should be 99, is ~d"
             (hash-table-count hash))
   (setf (gethash 17 hash) 17)
   (format t "~&after reinsertion, count should be 100, is ~d"
             (hash-table-count hash)))

>
> i tested the theory that it's just a bookkeeping bug by
> removing the assert.  the build continues on but breaks
> further down the line with some other code that is using a
> different hash table.  (circularity detection in uncross,
> src/code/uncross.lisp)

Do you remember what the error/complaint is in the latter case ?

>
> the two may be related.. it's hard to tell at the moment.
>
> my sbcl tree is 0.9.4.52 (current of today) and this is
> with openmcl 1.0-pre-050907 (DarwinPPC32)
>
>     ...bryan
>
> _______________________________________________
> Bug-openmcl mailing list
> [email protected]
> http://clozure.com/mailman/listinfo/bug-openmcl
>
>