-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixes for armv7l buildbots #51945
base: master
Are you sure you want to change the base?
Fixes for armv7l buildbots #51945
Conversation
96d3c9b
to
885bfcd
Compare
Alright, next up, a bus error during bootstrap:
|
According to asm-generic/siginfo.h on my system, that is:
|
I managed to catch it in
I'll see if the same happens with a debug build, just to try for a better stacktrace. |
I tried running a |
Try again with #52182 merged perhaps? |
06ede9a
to
a82e3bd
Compare
Sadly, it doesn't seem to help (yet) |
a82e3bd
to
8923976
Compare
I let it run for about an hour on my ARMv7 board until I hit:
Note that I think it is the statement earlier that failed, and gdb is showing the wrong address, as that vstr is clearly aligned, and that vldr from $r12 is clearly not aligned. |
8923976
to
6a21219
Compare
The IR we emit (on x86) is correct with regards to this alignment being align=1, so seems like this might be an ARM backend mistake in LLVM
|
I followed your steps as well on one of the pibot machines, I got a very similar result:
Mine showed
|
Hi, I get a build error similar to the one below while building on host with docker buildx:
What I get when I cancel a hang:
What might be interesting is when I follow a similar procedure on Raspberry Pi 4, I get more informative segfaults.
When it's run with gdb:
|
2d51ea6
to
79e3aa2
Compare
I've rebased in an attempt to see where we stand now that LLVM v16 has been merged. |
Looks like we end up with a new error:
|
Are we likely to get further if remove neon, vfp4 and all the vector instruction stuff? |
Jameson points out that ARM doesn't use the usual structure for these registers, and so we have to manually typecast this structure. X-ref: #47345 (comment)
79e3aa2
to
25e57f1
Compare
Jameson and I have been debugging this today; so far we've discovered the following:
|
Tracked this down. That failure comes from an ABI decision that gets made during the configure of libstdc++ depending on what features it can autodetect of the platform architecture was being used ( So to fix, IIUC, you need to configure the compiler with --with-libstdcxx-lock-policy=atomics to prevent the ABI from changing depending on the autodetected behavior for that. And/or ensure that the libstdc++ library is being compiled with atomics correctly enabled for the current architectural target (e.g. we make sure armv6 and armv7hf are using different compiler shards, since they have mutually incompatible ABIs for both atomics and float registers) |
Ah, at the moment we're using the same toolchain, only with different -march switches |
So it sounds like the path forward here is to rebuild our C++ dependencies (likely just LLVM, in practice) with toolchains that have a |
We have a new armv7l build farm; this branch is collecting the fixes necessary to get Julia building on that platform again.