[Sbcl-devel] Build failure on PPC64

10 views
Skip to first unread message

Eric Marsden

unread,
Jan 3, 2022, 4:21:33 AM1/3/22
to sbcl-devel
Hi,

I see the following failure attempt to build current HEAD from
2.1.11.145-238d536 on PowerPC64/Linux.

[ 19/306] src/compiler/generic/early-vm            (0.11 sec)
[ 20/306] src/compiler/generic/early-objdef        (0.03 sec)
[ 21/306] src/code/barrier                         (0.03 sec)
[ 22/306] src/code/parse-body                      (0.02 sec)
[ 23/306] src/compiler/policy                      (0.55 sec)
[ 24/306] src/code/early-extensions                (1.280004 sec)
fatal error encountered in SBCL pid 10255 tid 10255:
no scavenge function for object 0x1 (widetag 0x1)

Welcome to LDB, a low-level debugger for the Lisp runtime environment.
ldb> backtrace
Backtrace:
   0: [*] 0x3fff989f3c08 pc=0x100004a6a8 {0x100004a500+01a8}
{code_serialno=73a3}
   1:     0x3fff989f3b08 pc=0x1000020a30 {0x1000020000+0a30} (FLET
"WITHOUT-GCING-BODY-4" :IN HOST-SB-KERNEL::SUB-GC)
   2:     0x3fff989f3a08 pc=0x1000020550 {0x1000020000+0550} (FLET
"WITHOUT-INTERRUPTS-BODY-1" :IN HOST-SB-KERNEL::SUB-GC)
   3:     0x3fff989f3908 pc=0x10000201e0 {0x1000020000+01e0}
HOST-SB-KERNEL::SUB-GC
   4:     0x3fff989f38f0 pc=(nil) LRA=0x10048a36
   5: [I*]0x3fff989f38b0 pc=0x1008ee8868 {0x1008ee86c0+01a8} SB-C::MAKE-TN
   6:     0x3fff989f3870 pc=0x100254da90 {0x100254d630+0460}
SB-C::MAKE-WIRED-TN
   7:     0x3fff989f37f0 pc=0x100254d3b0 {0x100254d060+0350}
SB-C::IR2-CONVERT-FULL-CALL-ARGS
   8:     0x3fff989f3770 pc=0x100254c490 {0x100254c2e0+01b0}
SB-C::IR2-CONVERT-FIXED-FULL-CALL
   9:     0x3fff989f3730 pc=0x100254b5e0 {0x100254b430+01b0}
SB-C::IR2-CONVERT-FULL-CALL
  10:     0x3fff989f36f0 pc=0x100254b1e0 {0x100254a8a0+0940}
SB-C::IR2-CONVERT-BLOCK
  11:     0x3fff989f36b0 pc=0x100254a850 {0x100254a6c0+0190}
SB-C::IR2-CONVERT
  12:     0x3fff989f35f0 pc=0x1009033ee0 {0x10090337c0+0720}
SB-C::%COMPILE-COMPONENT


--
Eric Marsden
Web: https://risk-engineering.org/
Twitter: @LearnRiskEng

_______________________________________________
Sbcl-devel mailing list
Sbcl-...@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-devel

Stas Boukarev

unread,
Jan 3, 2022, 8:26:31 AM1/3/22
to Eric Marsden, sbcl-devel
The failure is in 2.1.11.145-238d536, not HEAD.

Bruce O'Neel

unread,
Jan 3, 2022, 9:57:31 AM1/3/22
to Stas Boukarev, sbcl-devel
Hi,

On PPC64LE on Linux I get an ok build with this version.

2.2.0.18-b4d40cbf9

I no longer have a PPC64 big endian system to test so this is just little endian.

cheers

bruce

Eric Marsden

unread,
Jan 4, 2022, 3:42:28 AM1/4/22
to Bruce O'Neel, sbcl-devel
Thanks, I confirm I was able to build from the 32-bit host on this machine.

Eric

Eric Marsden

unread,
Jan 5, 2022, 7:27:48 AM1/5/22
to sbcl-...@lists.sourceforge.net
With current HEAD (cb866c6343), I'm seeing the same problem on PPC64
building from 2.2.0.26-cb866c6 (a self build).

Douglas Katzman via Sbcl-devel

unread,
Jan 5, 2022, 12:22:05 PM1/5/22
to Eric Marsden, SBCL Devel-list
I'll probably revert the soft card marking change unless someone else cares to debug it.  I don't.  I was hoping it would just work.

Douglas Katzman via Sbcl-devel

unread,
Jan 7, 2022, 1:00:59 AM1/7/22
to Eric Marsden, SBCL Devel-list
I think this had nothing to do with the soft card marks and I think it's now fixed, and I've re-enabled soft marks.
Please report any further problems.

Eric Marsden

unread,
Jan 7, 2022, 6:21:48 AM1/7/22
to SBCL Devel-list
Hi,

Thanks for working on this. I see a new failure (lost GC invariant in
gencgc.c) with current HEAD.


//testing for consistency of first and second GENESIS passes
//header files match between first and second GENESIS -- good
real    3m29.046s
user    3m24.770s
sys     0m2.383s
//entering make-target-2.sh
//doing warm init - compilation phase
This is SBCL 2.2.0.44-f16d443, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
fatal error encountered in SBCL pid 37536 tid 37536:
GC invariant lost, file "gencgc.c", line 5333

Stas Boukarev

unread,
Jan 7, 2022, 7:59:17 AM1/7/22
to Douglas Katzman, SBCL Devel-list
That's caused by
f16d44366365a9529b78b05d6787be8b5e9ac084 gencgc: Store words_used,
not bytes_used, per page

And it's failing in the same place on arm64, with the values being
8080 and 6736.

Bruce O'Neel

unread,
Jan 7, 2022, 9:55:51 AM1/7/22
to Stas Boukarev, SBCL Devel-list
Hi,

This is a second confirmation that ppc64le and arm64 both fail with this problem.

cheers

bruce

On 2022-01-07T13:58:21.000+01:00, Stas Boukarev <stas...@gmail.com> wrote:
That's caused by
f16d44366365a9529b78b05d6787be8b5e9ac084 gencgc: Store words_used,
not bytes_used, per page

And it's failing in the same place on arm64, with the values being
8080 and 6736.

On Fri, Jan 7, 2022 at 2:23 PM Eric Marsden
<eric.m...@risk-engineering.org> wrote:

Hi,

Thanks for working on this. I see a new failure (lost GC invariant in
gencgc.c) with current HEAD.


//testing for consistency of first and second GENESIS passes
//header files match between first and second GENESIS -- good
real 3m29.046s
user 3m24.770s
sys 0m2.383s
//entering make-target-2.sh
//doing warm init - compilation phase
This is SBCL 2.2.0.44-f16d443, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/&gt;.

Douglas Katzman via Sbcl-devel

unread,
Jan 7, 2022, 10:05:28 AM1/7/22
to Stas Boukarev, SBCL Devel-list
Yeah, I meant to remove the choice of page_words_t and then by mistake didn't.
Do you think there are any users who need the 'typedef unsigned int' instead of 'unsigned short', or worse, hit the error case here?
Would be cleaner if we can just change it to unsigned short.  Anyway I'll push the fix for this.

#if GENCGC_PAGE_WORDS > USHRT_MAX

# if GENCGC_PAGE_WORDS > UINT_MAX

#   error "GENCGC_PAGE_WORDS unexpectedly large."

# else

    typedef unsigned int page_words_t;

# endif

#else

  typedef unsigned short page_words_t;

#endif

Stas Boukarev

unread,
Jan 7, 2022, 10:10:13 AM1/7/22
to Douglas Katzman, SBCL Devel-list
I doubt it, but it's a good idea to leave the error there.

Douglas Katzman via Sbcl-devel

unread,
Jan 7, 2022, 10:40:15 AM1/7/22
to Bruce O'Neel, Eric Marsden, SBCL Devel-list
A new problem is exposed by my latest patch: genesis understands how C structures are packed in little-endian, so this change fixed arm64 and ppc64le but did not fix ppc64be.
The packing must have been accidentally right if page_bytes_t was 'unsigned int'. But now page_words_t is unsigned short, and it comes out wrong in C.
Reply all
Reply to author
Forward
0 new messages