[Bug libgcc/67336] New: Verify pointers during stack unwind
y.gribov at samsung dot com
gcc-bugzilla@gcc.gnu.org
Mon Aug 24 08:37:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67336
Bug ID: 67336
Summary: Verify pointers during stack unwind
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgcc
Assignee: unassigned at gcc dot gnu.org
Reporter: y.gribov at samsung dot com
CC: v.garbuzov at samsung dot com
Target Milestone: ---
Invalid or incomplete unwind tables may cause generation of random invalid
pointers which cause libgcc unwinders to access unmapped memory locations and
terminate process with SIGSEGV. Libunwind has recently addressed this by adding
msync check prior to memory access
(http://git.savannah.gnu.org/gitweb/?p=libunwind.git;a=commit;h=770152268807e460184b4152e23aba9c86601090).
It may make sense to do the same for libgcc unwinders.
As syscall overhead may be too heavy for normal use, perhaps we could add
separate unwinder variants with verified memory accesses and use these when
speed is not important (e.g. in backtrace(3)).
More information about the Gcc-bugs
mailing list