Re: Build failure on FreeBSD/PowerPC 32-bit
Curtis Hamilton <[email protected]> Fri, 10 Jan 2025 14:07:55 -0500
| Newsgroups | gmane.lisp.steel-bank.general |
|---|---|
| Message-ID | <CAP9EAidAx_KfPGM2b1GxJti4Ldx9aeDNKQH-mir_M8hZ=kr3jw@mail.gmail.com> |
Thanks, I'll check it out. On Fri, Jan 10, 2025 at 1:01 PM Douglas Katzman <[email protected]> wrote: > There are actually two things going wrong in that backtrace, not just the > type error. > But I just built ppc32 on linux to confirm that it's not completely broken > in the manner shown above, and it worked fine. > At best I can only give some hints about trying to debug this crash > because in neither case could I see it being related to the OS > > First: TOPOLOGICAL-SORT creates its hash such that it should never resize. > It would call GROW-HASH-TABLE only if some pair in constraints had either a > car or cdr not in objects. I further convinced myself of this by adding an > assertion just before the RETURN: > (aver (<= (hash-table-count obj-info) (length objects))) > Therefore one question you may want to try to get an answer to is why some > (setf (gethash ..)) resized. You could add a length check on the key/value > vector to see if it grew after any given call. The vector can be seen > thusly: > (sb-impl::hash-table-pairs (make-hash-table :size 14)) => #(0 0 > #<unbound> #<unbound> #<unbound> #<unbound> #<unbound> #<unbound> ...) > Second: I would guess that the table's rehash-size slot is messed up and > does not contain a single-precision float. You could try printing the > hash-table from the ldb prompt using the 'p' command and the address of the > table. To find the tables, I added some output thusly- > > --- a/src/code/class.lisp > +++ b/src/code/class.lisp > @@ -522,6 +522,9 @@ between the ~A definition and the ~A definition" > (let ((obj-info (make-hash-table :size (length objects))) > (free-objs nil) > (result nil)) > + #-sb-xc-host > + (format t "~&topsort: ~d objects ~d constraints, ht=~x~%" > + (length objects) (length constraints) (get-lisp-obj-address > obj-info)) > (loop for (obj1 . obj2) in constraints do > (incf (first (ensure-gethash obj2 obj-info (list 0)))) > (push obj2 (rest (ensure-gethash obj1 obj-info (list 0))))) > _______________________________________________ Sbcl-help mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/sbcl-help