[LLVMbugs] [Bug 20800] New: Invalid compact unwind info generated for a function without frame pointers on OSX
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Aug 29 02:53:44 PDT 2014
http://llvm.org/bugs/show_bug.cgi?id=20800
Bug ID: 20800
Summary: Invalid compact unwind info generated for a function
without frame pointers on OSX
Product: libraries
Version: trunk
Hardware: PC
OS: MacOS X
Status: NEW
Severity: normal
Priority: P
Component: Backend: X86
Assignee: unassignedbugs at nondot.org
Reporter: glider at google.com
CC: isanbard at gmail.com, kcc at google.com, kledzik at apple.com,
llvmbugs at cs.uiuc.edu
Classification: Unclassified
The attached file contains the __asan_report_error function for which the
compact unwind info appears to be incorrect if the frame pointers are omitted:
$ bin/clang++ -O3 -fomit-frame-pointer asan_report.ii -c
$ bin/llvm-objdump -unwind-info -d asan_report.o
...
__Z19__asan_report_errormmmm:
0: 55 pushq %rbp
1: 41 57 pushq %r15
3: 41 56 pushq %r14
5: 41 55 pushq %r13
7: 41 54 pushq %r12
9: 53 pushq %rbx
a: 48 81 ec 18 08 00 00 subq $2072,
%rsp
...
Contents of __compact_unwind section:
Entry at offset 0x0:
start: 0x0 __Z19__asan_report_errormmmm
length: 0xda
compact encoding: 0x0309f800
According to /usr/include/mach-o/compact_unwind_encoding.h, the compact
encoding uses the frameless stack index mode (0x03000000 is
UNWIND_X86_64_MODE_STACK_IND), so the second byte of the compact encoding must
be the offset of the immediate constant denoting the stack size in the subq
instruction. This byte has value 0x9 instead of 0xc, which makes the unwinder
think the function stack size is around 3Gb.
This test case contains a reduced version of __asan_report_error in the ASan
runtime. I'm seeing actual crashes because of this bug when calling
_Unwind_Backtrace from the real __asan_report_error on OSX. GDB also has
problems unwinding through this function on OSX.
A number of other functions in the ASan runtime have the same incorrect compact
unwind info.
--
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/20140829/a9976c49/attachment.html>
More information about the llvm-bugs
mailing list