[Interest] [Qt3D] Logic aspect hangs on exit
Sean Harmer
sean.harmer at kdab.com
Fri Dec 18 11:52:23 CET 2015
Thanks. I'll try to look into this shortly.
Have a good weekend/Christmas/New Year.
Sean
On 18/12/2015 10:50, Nye wrote:
> Hello,
> I've filed a bug report, as I was able to extract the suspicious part
> of the code in a separate project. I also updated to the very last 5.6
> HEAD and the issue is still present. I'm not getting any segfaults
> anymore at least, which is good. I've attached a full reproducible
> example to the bugreport, so I expect I'll be corrected if in fact I'm
> doing something the wrong way. That's for now and thanks for the help.
>
> Kind regards,
> Konstantin.
>
> On Thu, Dec 17, 2015 at 12:39 PM, Nye <kshegunov at gmail.com
> <mailto:kshegunov at gmail.com>> wrote:
>
> Hello Sean,
> I'm not entirely convinced that it is really a problem with Qt3D,
> it still very well be my code. Here is how my data structure looks
> like:
>
> struct AgMapData {
> QAspectEngine aspectEngine;
> QOpenGLWindow window;
> QWidget * container;
> QFrameGraph * frameGraph;
> QEntity * rootEntity;
> QCamera * camera;
> } data;
>
> If I change the QOpenGLWindow to be created in the heap there is
> no deadlock, but instead I get a segmentation fault in
> Qt3DRenderer::Render::Renderer::doRender @ Renderer.cpp/555 as
> well as the following message in the output window: QThread:
> Destroyed while thread is still running ASSERT:
> "allocator->isEmpty()" in file backend/renderer.cpp, line 555 From
> what I can tell the window is destroyed in the GUI thread by Qt,
> while the render thread is trying to actually perform rendering.
> My suspicion is that when the window is created in the stack this
> is moot, since the window will not be deallocated until the the
> QAspectEngine's destructor has finished, which is where I get the
> deadlock. I could provide a backtrace as well, if you wish and
> will make your investigations easier. Kind regards.
>
>
> On Thu, Dec 17, 2015 at 12:20 PM, Sean Harmer
> <sean.harmer at kdab.com <mailto:sean.harmer at kdab.com>> wrote:
>
> On Thursday 17 Dec 2015 12:17:48 Nye wrote:
> > Hello Harald,
> > In fact this is what I'm attempting, but realized that there
> is a more
> > "subtle" way to do it. I think that switching the root
> entity and/or the
> > frame graph would be more appropriate, than to actually
> create two separate
> > GL widgets/windows.
> >
> > Sean,
> > No I don't really have any specific use cases. I think how
> it's now is
> > fine. I believe my code hangs because of the order of
> destruction of my
> > widgets, coupled with me creating the aspect engine on the
> stack. The
> > actual dead-lock I get in qaspectmanager.cpp @ 246 :
> m_waitForEndOfExecLoop.
> > acquire(1);
> > My guess is for some reason, because of the structure of my
> objects, the
> > event loop is not exiting. Still I wasn't able to reproduce
> it in a clean
> > separate projects, so I'll continue debugging and if
> necessary will file a
> > bug report.
>
> Hmm, I wonder if this regression is a side effect of another
> fairly recent fix
> made to avoid a data race with dynamically updated buffers and
> VAOs in the
> renderer. I'll dig into it. Thanks for the info.
>
> Sean
>
> >
> > Kind regards.
> >
> > On Thu, Dec 17, 2015 at 12:08 PM, Harald Vistnes
> <harald.vistnes at gmail.com <mailto:harald.vistnes at gmail.com>>
> >
> > wrote:
> > > Hi,
> > >
> > > I'm also interested in how to handle multiple windows with
> Qt3D. My use
> > > case is a widgets based CAD like application that will
> have two
> > > independent
> > > 3D windows in a QStackedWidget (so only one 3D window will
> be visible at a
> > > time). They will have different models loaded and the user
> will switch
> > > from
> > > one window to the other. Also, for each window, it must be
> possible to
> > > render the current view (root QEntity) to a high-res
> image.So in this case
> > > I guess there will be one QAspectEngine for each of the
> windows and then
> > > temporary QAspectEngines for offscreen rendering that
> shares the root
> > > entity with the other QAspectEngines?
> > >
> > > Harald
> > >
> > > 2015-12-17 10:49 GMT+01:00 Sean Harmer
> <sean.harmer at kdab.com <mailto:sean.harmer at kdab.com>>:
> > >> On Thursday 17 Dec 2015 11:37:49 Nye wrote:
> > >> > Hello,
> > >> > It (most probably) is a problem with my code. I've
> created two aspect
> > >> > engines (this is in a widget and I have two instances).
> I suppose
> > >> > having
> > >> > two aspect engines is not allowed? I've done it this
> way, because the
> > >> > aspect engine handles a single surface/window.
> Interestingly, it
> > >> > happens
> > >> > only with the logic aspect. On a related note, what
> would be the proper
> > >>
> > >> way
> > >>
> > >> > to use two gl windows with Qt3D?
> > >>
> > >> At present it is indeed to make two QAspectEngines as you
> are doing. This
> > >> is
> > >> something I'm looking into at the moment as it happens -
> well more
> > >> generally
> > >> what top level integration points do we need to support
> for the initial
> > >> version.
> > >>
> > >> If you have specific use cases, I'd be interested to hear
> what they are.
> > >>
> > >> Cheers,
> > >>
> > >> Sean
> > >>
> > >> > Kind regards.
> > >> >
> > >> > On Thu, Dec 17, 2015 at 10:52 AM, Sean Harmer
> <sean.harmer at kdab.com <mailto:sean.harmer at kdab.com>>
> > >>
> > >> wrote:
> > >> > > Hi,
> > >> > >
> > >> > > Can you file a bugreport with a small test case for
> this please? This
> > >>
> > >> was
> > >>
> > >> > > certainly working in the cases I tested. Perhaps
> there's a regression
> > >>
> > >> we
> > >>
> > >> > > need
> > >> > > to fix.
> > >> > >
> > >> > > Thanks,
> > >> > >
> > >> > > Sean
> > >> > >
> > >> > > On Thursday 17 Dec 2015 09:51:51 Nye wrote:
> > >> > > > Hello,
> > >> > > > It seems for some reason that adding a logic aspect
> to the aspect
> > >>
> > >> engine
> > >>
> > >> > > > causes the application to "hang" on exit. My guess
> is that for some
> > >> > >
> > >> > > reason
> > >> > >
> > >> > > > the shutdown sequence is not executing properly and
> the threads in
> > >>
> > >> the
> > >>
> > >> > > pool
> > >> > >
> > >> > > > are left in waiting. Is there currently a
> workaround for that (i.e.
> > >>
> > >> can
> > >>
> > >> > > > I
> > >> > > > manually shutdown the aspect engine)? I'm creating
> the aspect
> > >>
> > >> engine on
> > >>
> > >> > > the
> > >> > >
> > >> > > > stack, maybe this is an issue?
> > >> > > > I'm developing on Debian stretch with 4.2 kernel,
> if that helps.
> > >>
> > >> Qt3D is
> > >>
> > >> > > > compiled from the most recent source available in
> the git
> > >>
> > >> repository for
> > >>
> > >> > > > the 5.6 branch.
> > >> > > >
> > >> > > > Kind regards.
> > >> > >
> > >> > > --
> > >> > > Dr Sean Harmer | sean.harmer at kdab.com
> <mailto:sean.harmer at kdab.com> | Managing Director UK
> > >> > > KDAB (UK) Ltd, a KDAB Group company
> > >> > > Tel. +44 (0)1625 809908
> <tel:%2B44%20%280%291625%20809908>; Sweden (HQ) +46-563-540090
> <tel:%2B46-563-540090>
> > >> > > Mobile: +44 (0)7545 140604
> <tel:%2B44%20%280%297545%20140604>
> > >> > > KDAB - Qt Experts
> > >>
> > >> --
> > >> Dr Sean Harmer | sean.harmer at kdab.com
> <mailto:sean.harmer at kdab.com> | Managing Director UK
> > >> KDAB (UK) Ltd, a KDAB Group company
> > >> Tel. +44 (0)1625 809908
> <tel:%2B44%20%280%291625%20809908>; Sweden (HQ) +46-563-540090
> <tel:%2B46-563-540090>
> > >> Mobile: +44 (0)7545 140604 <tel:%2B44%20%280%297545%20140604>
> > >> KDAB - Qt Experts
> > >> _______________________________________________
> > >> Interest mailing list
> > >> Interest at qt-project.org <mailto:Interest at qt-project.org>
> > >> http://lists.qt-project.org/mailman/listinfo/interest
>
> --
> Dr Sean Harmer | sean.harmer at kdab.com
> <mailto:sean.harmer at kdab.com> | Managing Director UK
> KDAB (UK) Ltd, a KDAB Group company
> Tel. +44 (0)1625 809908 <tel:%2B44%20%280%291625%20809908>;
> Sweden (HQ) +46-563-540090 <tel:%2B46-563-540090>
> Mobile: +44 (0)7545 140604 <tel:%2B44%20%280%297545%20140604>
> KDAB - Qt Experts
>
>
>
--
Dr Sean Harmer | sean.harmer at kdab.com | Managing Director UK
KDAB (UK) Ltd, a KDAB Group company
Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090
Mobile: +44 (0)7545 140604
KDAB - Qt Experts
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20151218/e7a9bb5d/attachment.html>
More information about the Interest
mailing list