The issue is that for the push/pop macro the old state of the macro (a
cpp_macro reference) is stored. As this structure is handled by GC without a
root, all get free'ed when garbage collection happens.
This gc can lead to issues when such a saved node gets undefined and the node,
which previously hold the cpp_macro reference, gets reused for a different
macro. As the linked in the saved macro list isn't under control of gc and it
doesn't have a gc root element, the stored reference gets invalid in such cases
and can lead to segmentation faults due access to already free'ed memory.


-- 
           Summary: Dangling reference about saved cpp_macro for push/pop
                    macro
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: preprocessor
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ktietz at gcc dot gnu dot org
GCC target triplet: *-*-*


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45362

Reply via email to