This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/70096] New: [Invalid codegen] Read of uninitialized value in ref-qualified pointer to member function


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70096

            Bug ID: 70096
           Summary: [Invalid codegen] Read of uninitialized value in
                    ref-qualified pointer to member function
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ldionne.2 at gmail dot com
  Target Milestone: ---

The following code has a codegen issue that causes the read of an uninitialized 
value, which can lead to a segfault in some circumstances:

    struct Holder {
        void operator()() & { int read = data; }
        int data;
    };

    template <typename F = void()&>
    void test() {
        Holder h{42};
        F Holder::* fptr = &Holder::operator();
        (h.*fptr)();
    }

    int main() {
        test();
    }

> g++ -std=c++11 test/worksheet.cpp
> valgrind --leak-check=full --track-origins=yes ./a.out

    ==44102== Memcheck, a memory error detector
    [...]
    ==44102== Use of uninitialised value of size 8
    ==44102==    at 0x100000EE6: Holder::operator()() & (in ./a.out)
    ==44102==    by 0x100000F26: void test<void () &>() (in ./a.out)
    ==44102==    by 0x100000ED2: main (in ./a.out)
    ==44102==  Uninitialised value was created by a stack allocation
    ==44102==    at 0x100000F2A: void test<void () &>() (in ./a.out)

I'm not sure, but I think it has something to do with the fact that we're 
using `F = void() &` (note the ref-qualifier) and the reading of the `this`
pointer. I'm not sure at all, but just pointing out a possible direction.

Live example: http://melpon.org/wandbox/permlink/kzRh8PNguwrP11lB

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]