-
Notifications
You must be signed in to change notification settings - Fork 1k
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
All 32-bit binaries crash with glibc 2.27 #954
Comments
The discussion with the glibc folks died out. I will ping, but I don't have high hopes. |
Jakub fix this in the GCC copy of the code: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84761 |
.. and looks like the same change has never been applied to clang As we agreed many years ago, GCC variant of run-time should be a verbatim copy of one in LLVM |
I've fixed ASan for NetBSD/i386 https://reviews.llvm.org/D46585 |
This is not submitted, nor even posted properly (llvm-commits was not CC-ed, I also didn't know about this patch). |
@krytarowski is that related to this issue or the other? I am not sure if NetBSD uses glibc. Is it OK to fix LLVM and then retroactively change GCC? I would prefer making progress in LLVM and not depend on GCC for fixing this. D44623 seems a good start. There is another version check slightly below in
Regarding the synchronization between GCC/LLVM wrt compiler-rt, I have no idea about that. Perhaps @fweimer could comment on that? |
Our contract between LLVM and GCC is (has been?) that all changes to sanitizer run-times are first made to the LLVM tree. Then GCC pulls them whenever they need to. |
@Lekensteyn I've noted issues with TLS and i386 and though it will be worth to share for your interest. We can use GLIBC, but it's non-orthodox :) If it's totally unrelated, please disregard. |
Perhaps it is a misunderstanding and not an intentional contract violation. Let's see what GCC/@jakubjelinek has to say about the comment in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84761#c12 |
This should be fixed now by "[ASAN] Fix crash on i?86-linux (32-bit) against glibc 2.27 and later" as proposed by Jakub. It requires compiler-rt to match the glibc version in use (and otherwise it would crash again). For more test results, see https://reviews.llvm.org/D44623#1126736 (independent of this patch, there were already some test failures). Buildbot failures post-mergeAll 2 failures are flaky and a rebuild was successful. sanitizer-x86_64-linux-bootstrap-msanfailed annotate failed check-lld msan http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap-msan/builds/5208 Output (frames 3 and 4 were manually symbolized based on libc6-dbg 2.24-11+deb9u3)
https://sources.debian.org/src/glibc/2.24-11+deb9u3/stdlib/exit.c/#L83 clang-cmake-aarch64-fullfailed ninja check 2 http://lab.llvm.org:8011/builders/clang-cmake-aarch64-full/builds/5244
|
All 32-bit applications currently crash with glibc 2.27 as demonstrated by:
For some reason the calling convention has changed from
regparm(2)
to cdecl. It has likely something to do with https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commit;h=17e00cc69eac2ec10ac69a3f85db0dffc9d73845Environment: Arch Linux x86_64 with lib32-glibc 2.27-3. Working version is lib32-glibc 2.26-11.
Originally found while running
check-all
LLVM tests, all 781 i386 tests fail, plus:Related topic: #914
The text was updated successfully, but these errors were encountered: