View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0005420 | ParaView | (No Category) | public | 2007-07-27 11:03 | 2007-08-30 15:30 | ||||
Reporter | Ken Moreland | ||||||||
Assigned To | Utkarsh Ayachit | ||||||||
Priority | urgent | Severity | major | Reproducibility | sometimes | ||||
Status | closed | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0005420: Crash on server disconnect | ||||||||
Description | Right now, when I disconnect from the server for any reason, my client crashes. | ||||||||
Tags | No tags attached. | ||||||||
Project | |||||||||
Topic Name | |||||||||
Type | |||||||||
Attached Files | |||||||||
Relationships | |
Relationships |
Notes | |
(0008430) Berk Geveci (administrator) 2007-08-13 15:01 |
We need more specific instruction. I could not reproduce this bug. |
(0008731) Ken Moreland (manager) 2007-08-28 19:00 |
It took me a while to figure out why it is not crashing for you but it is crashing for me. The reason is that I launch the server with the --use-offscreen-rendering flag (which is necessary because the server processes share graphics cards). If I remove that flag from the server command, I can successfully disconnect. If that flag is there, the client crashes on disconnect. (Or at least this is true for Windows clients. I have not tried others.) I have also figured out why the crash happens. I draw your attention to vtkSMRenderViewProxy.cxx around line 394 (toward the end of the EndCreateVTKObjects method). After you disconnect from the server, the --use-offscreen-rendering option "sticks" so that it is applied while the builtin connection is established. When this flag is on, the render view turns the SetOffScreenRendering flag on in the render server and off in the client. However, when connecting to builtin the render server and the client are one and the same. Thus, the effect is to turn offscreen rendering on and then back off. "So what?" you say. Aha! Here is where things get ugly. The process of turning offscreen rendering off and then on causes the window to actually be created. That is, a render window pops up outside of the client GUI. Now later on in pqRenderView::initializeWidgets, the render window is given to a QVTKWidget. Because the render window is already created, the QVTKWidget calls Finalize on the render window so that it can establish an OpenGL context within the widget. When Finalize is called, all of the renderers that were established are dumped. This is the real problem because at this point all the renderers were already attached and are expected to be there later when representations (such as the axis) are added to the view. So, in summary, there are three minor things that go wrong to collaborate into something major going wrong. First, the client render window is made to be offscreen and then onscreen when it really should never be set to offscreen. Second, the process of changing the offscreen flag causes the render window to be created even if it has not been created before. It probably should not be created until a render or an explicit initialize is called, but some might argue otherwise. Third, in the case where the QVTKWidget is given a render window, it should preserve all of the renderers attached to the render window. If any one of these is fixed, the problem should go away. |
(0008738) Utkarsh Ayachit (administrator) 2007-08-29 13:16 |
The server side options are no longer added to the client side options. The client should use GetServerInformation() to get information about server side options. Since UseOffscreen is not determined using server side option, we no longer face the issue arising due to use of osolete UseOffscreen flag. /cvsroot/ParaView3/ParaView3/Qt/Core/pqApplicationCore.cxx,v <-- pqApplicationCore.cxx new revision: 1.77; previous revision: 1.76 /cvsroot/ParaView3/ParaView3/Qt/Core/pqComparativeRenderView.cxx,v <-- pqComparativeRenderView.cxx new revision: 1.7; previous revision: 1.6 /cvsroot/ParaView3/ParaView3/Qt/Core/pqServer.cxx,v <-- pqServer.cxx new revision: 1.20; previous revision: 1.19 /cvsroot/ParaView3/ParaView3/Qt/Core/pqServer.h,v <-- pqServer.h new revision: 1.12; previous revision: 1.11 /cvsroot/ParaView3/ParaView3/Servers/Common/vtkProcessModule.cxx,v <-- vtkProcessModule.cxx new revision: 1.74; previous revision: 1.73 /cvsroot/ParaView3/ParaView3/Servers/Common/vtkProcessModule.h,v <-- vtkProcessModule.h new revision: 1.60; previous revision: 1.59 /cvsroot/ParaView3/ParaView3/Servers/ServerManager/vtkSMIceTMultiDisplayRenderViewProxy.cxx,v <-- vtkSMIceTMultiDisplayRenderViewProxy.cxx new revision: 1.5; previous revision: 1.4 /cvsroot/ParaView3/ParaView3/Servers/ServerManager/vtkSMRenderViewProxy.cxx,v <-- vtkSMRenderViewProxy.cxx new revision: 1.48; previous revision: 1.47 |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2007-08-13 15:01 | Berk Geveci | Note Added: 0008430 | |
2007-08-13 15:01 | Berk Geveci | Reproducibility | always => unable to reproduce |
2007-08-23 17:10 | Berk Geveci | Category | => 3.2 |
2007-08-28 19:00 | Ken Moreland | Note Added: 0008731 | |
2007-08-28 19:00 | Ken Moreland | Priority | high => urgent |
2007-08-29 10:48 | Berk Geveci | Assigned To | Berk Geveci => Utkarsh Ayachit |
2007-08-29 13:16 | Utkarsh Ayachit | Status | tabled => @80@ |
2007-08-29 13:16 | Utkarsh Ayachit | Resolution | open => fixed |
2007-08-29 13:16 | Utkarsh Ayachit | Note Added: 0008738 | |
2007-08-30 15:29 | Ken Moreland | Reproducibility | unable to reproduce => sometimes |
2007-08-30 15:30 | Ken Moreland | Status | @80@ => closed |
2011-06-16 13:10 | Zack Galbreath | Category | => (No Category) |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |