[llvm-bugs] [Bug 30940] New: Programs falsly report stack check failure on Android x86
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Nov 7 16:45:15 PST 2016
https://llvm.org/bugs/show_bug.cgi?id=30940
Bug ID: 30940
Summary: Programs falsly report stack check failure on Android
x86
Product: libraries
Version: 3.9
Hardware: Other
OS: other
Status: NEW
Severity: normal
Priority: P
Component: Backend: X86
Assignee: unassignedbugs at nondot.org
Reporter: strager at fb.com
CC: llvm-bugs at lists.llvm.org
Classification: Unclassified
Created attachment 17566
--> https://llvm.org/bugs/attachment.cgi?id=17566&action=edit
NDK project of small program demonstrating the bug.
As of LLVM r265481, code generated by Clang for -fstack-protector for Android
x86 does not function properly on shipping version of Android such as Android
4.1 (API level 16). r265481 has a runtime dependency on a change in Android's
libc (Bionic) which does not exist on these older versions of Android.
Attached is a test case which demonstrates the issue. The test case shows that
modifying a user-allocated thread-specific variable causes the program to crash
when the stack-protected function returns. Clang thinks the stack canary
changed, but in reality the “guard value” changed.
To build the test case, install the Android NDK (which includes Clang) and the
API level 16 Android x86 emulator (from the Android SDK) and run:
$ ndk-build NDK_TOOLCHAIN_VERSION=clang
$ adb push libs/x86/stack-protector-bug /data/local/tmp/stack-protector-bug
$ adb shell /data/local/tmp/stack-protector-bug
A toolchain without this bug (e.g. LLVM master with the attached patch) will
cause the program to print:
About to return...
Did not crash
A toolchain with this bug (e.g. LLVM master) will cause the program to raise
SIGABRT due to a call to __stack_chk_fail.
Attached is a patch which fixes the issue. I don't think it's sufficient,
though; it effectively undoes the optimizations in r265481.
Note: This bug is also present in GCC 4.9.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20161108/d6a52c77/attachment.html>
More information about the llvm-bugs
mailing list