Uploaded image for project: 'ROOT'
  1. ROOT
  2. ROOT-4032

Main thread stack is growing at every pop-up window in TQtWidget canvas

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • High
    • Resolution: Won't Fix
    • 5.32/00
    • None
    • Graphics
    • None
    • GNU/Linux

    Description

      The issue can be reproduced with the Qt ROOT example from the ROOT User's Guide. Opening a pop-window in TQtWidget canvas (for example the Line Properties Dialog one or any other) adds the following calls to the main thread stack trace:

      #87 0xf4a869f9 in TGClient::WaitFor(TGWindow*) ()
      from libGui.so
      #88 0xf4bd0125 in TRootDialog::Popup() ()
      from libGui.so
      #89 0xf4bcc386 in TRootContextMenu::Dialog(TObject*, TFunction*) ()
      from libGui.so
      #90 0xf4bcb1e2 in TRootContextMenu::Dialog(TObject*, TMethod*) ()
      from libGui.so
      #91 0xf6a6a348 in TContextMenu::Action(TObject*, TMethod*) ()

      The point is that even after closing the pop-up dialog window the TGClient::WaitFor function does not return. It starts playing the role of the main event loop and if another pop-up window is requested to be opened it simply adds up another bunch of the same function calls to the stack:

      #73 0xf4a869f9 in TGClient::WaitFor(TGWindow*) ()
      from libGui.so
      #74 0xf4bd0125 in TRootDialog::Popup() ()
      from libGui.so
      #75 0xf4bcc386 in TRootContextMenu::Dialog(TObject*, TFunction*) ()
      from libGui.so
      #76 0xf4bcb1e2 in TRootContextMenu::Dialog(TObject*, TMethod*) ()
      from libGui.so
      #77 0xf6a6a348 in TContextMenu::Action(TObject*, TMethod*) ()
      from libCore.so
      #78 0xf4bcb5c0 in TRootContextMenu::ProcessMessage(long, long, long) ()
      from libGui.so
      --Type <return> to continue, or q <return> to quit--
      #79 0xf4acbb66 in TGFrame::HandleClientMessage(Event_t*) ()
      from libGui.so
      #80 0xf4acbfd2 in TGFrame::HandleEvent(Event_t*) ()
      from libGui.so
      #81 0xf4a880e3 in TGClient::HandleMaskEvent(Event_t*, unsigned long) ()
      from libGui.so
      #82 0xf4a882d0 in TGClient::ProcessOneEvent() ()
      from libGui.so
      #83 0xf4a8836d in TGClient::HandleInput() ()
      from libGui.so
      #84 0xf4a883a0 in TGInputHandler::Notify() ()
      from libGui.so
      #85 0xf6b5a13f in TUnixSystem::DispatchOneEvent(bool) ()
      from libCore.so
      #86 0xf6ac3ac2 in TSystem::ProcessEvents() ()
      from libCore.so
      #87 0xf4a869f9 in TGClient::WaitFor(TGWindow*) ()

      This goes on and on with any new pop-up window been opened making stack deeper and deeper until it's being exhausted.

      Attachments

        Activity

          People

            bellenot Bertrand Bellenot
            kolos Serguei Kolos
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: