Details
-
Bug
-
Status: Closed (View Workflow)
-
High
-
Resolution: Won't Fix
-
5.32/00
-
None
-
None
-
GNU/Linux
-
bugs89911
-
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.