George Koehler <[email protected]> writes:
> On Sat, 19 Feb 2022 12:29:18 +0100
> Omar Polo <[email protected]> wrote:
>
>> Hello,
>>
>> please find attached a trivial diff to update lang/sbcl to the latest
>> version, 2.2.1 release the last January 30.
>>
>> The changelog is here: http://www.sbcl.org/news.html#2.2.1
>>
>> `make test' seems just like the current version, I'm typing this mail
>> from stumpwm built with sbcl-threads, and I've also tested a couple of
>> other programs that ends up using various libraries from quicklisp with
>> success.
>>
>> OK/comments?
>
> I have a problem: if devel/capstone/main is installed, then sbcl fails
> to build on powerpc. This happens with sbcl-2.1.11 or sbcl-2.2.1.
>
> sbcl doesn't depend on capstone, and doesn't need capstone to build
> contrib/sb-capstone, but does try to test sb-capstone during the
> build. If libcapstone.so is missing, then sbcl skips the test. If
> libcapstone.so is found, then the test crashes, so the build fails.
> An installed capstone broke sbcl-2.1.11 in the ongoing powerpc bulk;
> I told the bulk to retry sbcl; it succeeded after removing capstone.
>
> contrib might also try to open libmpfr.so (devel/mpfr) and
> libgmp.so (devel/gmp), but both of these are somewhere in sbcl's
> build dependencies.
>
> The fix might be to disable the test, but I have not yet tried this.
> The build failure in sbcl-2.2.1 is,
I can't reproduce the issue on amd64, it builds fine without capstone
and the tests are passing if it's installed.
> Doing 3 pending tests of 3 tests total.
> CORRUPTION WARNING in SBCL pid 41036:
> Memory fault at 0x0 (pc=0xb96bb61c)
> The integrity of this image is possibly compromised.
> Exiting.
> 0: [I*]0x9361bda0 pc=0xb96bb61c {0x50c37288+68a84394} {code_serialno=9970}
> 1: [*] 0x9361bd80 pc=0x50c374b8 {0x50c37288+0230} SB-CAPSTONE::CS-OPEN
could this be an issue in capstone itself on powerpc?
SB-CAPSTONE::CS-OPEN is "just"
(define-alien-routine cs-open int (arch int) (mode (integer 64)) (handle
unsigned :out))
but I don't know how sbcl calls into c. To be fair the `integer 64`
looks wrong, cs_open takes an enum as second argument which should be
just an `int' and the fault at 0x0 could be that 32 bits of mode are
read as the next argument which should be a pointer; I'm probably
talking crap tho. I'll do a build on i386 out of curiosity thought :)