[Bug c++/52263] New: Zero-initialization doesn't seem to work correctly for virtual inheritance

ryan_at_work_also at hotmail dot com gcc-bugzilla@gcc.gnu.org
Wed Feb 15 18:43:00 GMT 2012


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

             Bug #: 52263
           Summary: Zero-initialization doesn't seem to work correctly for
                    virtual inheritance
    Classification: Unclassified
           Product: gcc
           Version: 4.6.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: ryan_at_work_also@hotmail.com


Created attachment 26666
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26666
error testcase

Using:

g++ (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The following code will abort due to the failed check on deconstruction at exit
(damaged memory). Uncomment the constructor of "Derived" and things work fine. 

The larger workspace I found this in actually had data being zeroed for other
objects in memory (from a "rep stos" instruction). It looked like the
initialization of the "Base" object occurred followed by a zero-initialization
of that same object (which had already been created) occurred, BUT at the wrong
memory address in my case (over memory used by other objects in my
application).

The output from compilation:

g++ -Wall -Wextra  -o gcc_fail  gcc_fail.cxx
cc_fail.cxx:53:2: warning: #warning "When uncommented, everything works fine -
when commented, abort occurs" [-Wcpp]
gcc_fail.cxx:66:1: warning: unused parameter ‘argc’ [-Wunused-parameter]
gcc_fail.cxx:66:1: warning: unused parameter ‘argv’ [-Wunused-parameter]



More information about the Gcc-bugs mailing list