[Interest] Destructor appearing twice in the stack trace?
Gian Maxera
gmaxera at gmail.com
Mon Nov 9 16:58:16 CET 2015
Are you sure that in some way it’s not child of itself ?
Qt automatically destroy all children of an QObject … and I really don’t know how safe is Qt to assign itself as child.
Ciao,
Gianluca.
> On 9 Nov 2015, at 15:55, Etienne Sandré-Chardonnal <etienne.sandre at m4x.org> wrote:
>
> Dear Gian,
>
> I have checked that of course. But this is not the case, the destructor has been reduced to a single call to qDebug (see my other mail) and the error persists.
> Also, when I set a breakpoint on the qDebug line, the debugger halts on the second call (both are already in the stack) which is again very suprising.
>
> I use the debugger often and never had any problem like that before.
>
> Cheers,
>
> Etienne
>
>
>
> 2015-11-09 16:43 GMT+01:00 Gian Maxera <gmaxera at gmail.com <mailto:gmaxera at gmail.com>>:
>
> > On 9 Nov 2015, at 15:38, Konstantin Tokarev <annulen at yandex.ru <mailto:annulen at yandex.ru>> wrote:
> >
> >
> >
> > 09.11.2015, 18:22, "Etienne Sandré-Chardonnal" <etienne.sandre at m4x.org <mailto:etienne.sandre at m4x.org>>:
> >> Dear all,
> >>
> >> I am debugging an app which crashes when an object is being deleted. The debuggers halt on a segmentation fault inside QObject destructor. The object deletion was requested by a call to deleteLater()
> >>
> >> Here is what I get in the stack trace:
> >>
> >> 0 QObject::~QObject qobject.cpp 993 0x7ffff62c7580
> >> 1 RendererInterface::~RendererInterface rendererinterface.cpp 119 0x60664f
> >> 2 RendererInterface::~RendererInterface rendererinterface.cpp 137 0x60667e
> >> 3 qDeleteInEventHandler qobject.cpp 4391 0x7ffff62d06e5
> >>
> >> How is it possible to have the destructor twice in the stack?? At the beginning I was thinking this was a GDB bug (GDB/MinGW under windows is buggy) but I get the same result when compiling the app under linux.
> >>
> >> Any idea how this can happen?
> >
> > Answer is definitely around lines 119-137 of rendererinterface.cpp
>
>
> You are calling delete on the same object into the destructor. You are doing something like that:
>
> delete this
>
> inside the destructor.
>
> Maybe there is some internal variable that got the “this” value and force the object to try to destroy itself.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20151109/0e45dddc/attachment.html>
More information about the Interest
mailing list