View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0005420ParaView(No Category)public2007-07-27 11:032007-08-30 15:30
ReporterKen Moreland 
Assigned ToUtkarsh Ayachit 
PriorityurgentSeveritymajorReproducibilitysometimes
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0005420: Crash on server disconnect
DescriptionRight now, when I disconnect from the server for any reason, my client crashes.
TagsNo tags attached.
Project
Topic Name
Type
Attached Files

 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

 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)


Copyright © 2000 - 2018 MantisBT Team