Re: Build failure on FreeBSD/PowerPC 32-bit
Curtis Hamilton <[email protected]> Sat, 11 Jan 2025 08:25:24 -0500
| Newsgroups | gmane.lisp.steel-bank.general |
|---|---|
| Message-ID | <CAP9EAidey_yDEW-D1pVqRF30VNw9XY5va4D8fBeYKDQKMdHRGg@mail.gmail.com> |
Could the issue be related to the ABI? FreeBSD uses ABI 2 on PowerPC both big and little endian, which is the same ABI Linux uses for little endian. According to “make-config.sh” little endian is never 32-bit. Although I’m build on big endian, will the OS using ABI 2 be an issue, with the code expecting ABI 1.x? Thoughts! On Fri, Jan 10, 2025 at 2:07 PM Curtis Hamilton <[email protected]> wrote: > 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