[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