Hi, I tested on Linux (Ubuntu 16.04).
Best, Andy On Tue, Jul 11, 2017 at 1:58 PM, <[email protected]> wrote: > Hi Andy, > > I just tried my example on arch linux and it works as expected. (ParaView > 5.4.0-RC1) > > Somehow I got the feeling it is an issue related to Windows. Just to be > sure, which OS did you choose to test the example code? > > Thank you very much for your time and support, > Simon > > > > > Am 2017-07-11 17:02, schrieb Andy Bauer: > >> Hi Simon, >> >> I tried with PV master (84f6e514) and couldn't replicate the crash. I >> was able to get the connection between the GUI and the CatalystTest >> executable though since I saw the PVTrivialProducer come up in the >> GUI. >> >> Maybe you could try PV master and see if it works for you. Beyond that >> I think figuring out your issue would take a non-trivial amount of >> effort to figure out. >> >> Cheers, >> Andy >> >> On Tue, Jul 11, 2017 at 8:04 AM, Simon Klarmann >> <[email protected]> wrote: >> >> Hi Andy, >>> >>> I want to be able to close the connection from both sides. Closing >>> the connection from the Insitu side works by calling >>> vtkLiveInsituLink::DropLiveInsituConnection(). >>> >>> Closing the connection from the Live side, e.g. by closing the GUI, >>> causes my application to hang in the vtkSocket::Receive() method. >>> >>> After enabling the Debug mode I get the following Error on the >>> Insitu side: >>> >>> “ERROR: In >>> D:\build\ParaView-v5.4.0\VTK\Common\System\vtkSocket.cxx, line 572 >>> >>> vtkClientSocket (0000000008BFFC00): Socket error in call to send. >>> Eine bestehende Verbindung wurde softwaregesteuert durch den >>> Hostcomputer abgebrochen.” >>> >>> „Eine bestehende Verbindung wurde softwaregesteuert durch den >>> Hostcomputer abgebrochen“ >>> >>> This seems to be a windows specific message notifying about a >>> software controlled termination of the connection. So the >>> information of the termination of the connection is somewhere >>> available. The method throwing this error is the vtkSocket::Send() >>> method. >>> >>> This error shows up as soon as I close the connection from the Live >>> side (GUI) and then perform an InsituUpdate on the Insitu side. >>> Still after this message, my Insitu side runs into >>> vtkSocket::Receive() and get stuck there, trying to receive data. >>> >>> Additional Info: >>> >>> Performing the live visualization with the vtkCPPythonAdapter leads >>> to the same error message and a crash of the Insitu application. >>> >>> Attached is a minimalistic working example. In both cases the error >>> happens. >>> >>> Steps to reproduce: >>> >>> 1. Start Paraview ->Catalyst->Connect >>> >>> 2. Start the application, choose either 0 for python or 1 for >>> cpp, then the PVTrivialproducer should show up in Paraview >>> >>> 3. Close Paraview >>> >>> 4. Continue the application ->crash >>> >>> I hope this helps a little bit to get an insight on what I did. >>> >>> Thanks, >>> >>> Simon >>> >>> VON: Andy Bauer [mailto:[email protected] [1]] >>> GESENDET: Montag, 10. Juli 2017 22:21 >>> >>> AN: Simon Klarmann >>> CC: [email protected] >>> BETREFF: Re: [Paraview] C++ Catalyst vtkSocket::Receive stuck in >>> >>> loop on Windows >>> >>> Hi, >>> >>> Are you trying to close the connection from the in situ side? The >>> design was for the connection to be close through the GUI. >>> >>> It's difficult to say what exactly is going on here without getting >>> fairly deep into the problem. Theoretically though it should be >>> possible to do the Live link in C++ as most of the Python routines >>> call wrapped C++ routines. >>> >>> There should be some way to figure out the status of the connection >>> on the PV server (the builtin server if you're not connected to a >>> separate pvserver process) either the NotifyClientDisconnected() >>> method, or vtkLiveInsituLink::OnConnectionClosedEvent() or >>> vtkLiveInsituLink::DropLiveInsituConnection() member functions. >>> >>> Cheers, >>> >>> Andy >>> >>> On Mon, Jul 10, 2017 at 10:34 AM, Simon Klarmann >>> <[email protected]> wrote: >>> >>> Sorry I think I have chosen the wrong reply method. >>> >>> Hi Andy, >>> >>> I already got rid of Python on both sides. CoProcessing with Live >>> connection is working by directly using the vtkLiveInsituLink (pure >>> C++ implementation). >>> >>> Working with both Paraview 5.2 and 5.4. >>> >>> My problem is closing the connection on the Live side (e.g. closing >>> Paraview). Doing so, my Insitu side hangs (when trying again to send >>> data, m_link->InsituUpdate, see below) in the receive method of the >>> vtkSocket class until at some point an integer underflow happens. >>> >>> Closing the connection from the Insitu side everything works as >>> expected. >>> >>> Are there any methods to directly check if the connection is still >>> alive? >>> >>> Or is it a Windows specific problem? >>> >>> Additionally the steps for the live connection in C++, for sure >>> there may be more elegant ways: >>> >>> // Initialization >>> >>> vtkCPProcessor *m_proc = vtkCPProcessor::New(); >>> >>> m_proc->Initialize(); >>> >>> vtkLiveInsituLink *m_link = >>> vtkLiveInsituLink::New(); >>> >>> m_link->SetInsituPort(22222); >>> >>> m_link->SetHostname("localhost"); >>> >>> m_link->SetProcessType(vtkLiveInsituLink::INSITU); >>> >>> vtkSMProxyManager *m_spxm = >>> >>> vtkSMProxyManager::GetProxyManager()->GetActiveSessionProxyManager(); >> >>> >>> vtkSMProxy *m_px = m_spxm->NewProxy("sources", >>> "PVTrivialProducer"); >>> >>> vtkSMSourceProxy *m_spx = >>> vtkSMSourceProxy::SafeDownCast(m_px); >>> >>> m_spxm->RegisterProxy("sources", m_spx); >>> >>> vtkObjectBase *obase = m_spx->GetClientSideObject(); >>> >>> vtkPVTrivialProducer *prod = >>> >>> >>> vtkPVTrivialProducer::SafeDownCast(obase); >>> >>> prod->SetOutput(m_toplot, m_time); // m_toplot is >>> a vtkMultiBlockDataSet >>> >>> m_link->Initialize(m_spxm); >>> >>> //Update the live side >>> >>> m_link->InsituUpdate(m_time, m_tstep); >>> >>> m_spx->UpdatePipeline(m_time); >>> >>> m_link->InsituPostProcess(m_time,m_tstep); >>> >>> Thanks, >>> >>> Simon >>> >>> VON: Andy Bauer [mailto:[email protected]] >>> GESENDET: Donnerstag, 6. Juli 2017 17:14 >>> AN: Simon Klarmann >>> CC: [email protected] >>> BETREFF: Re: [Paraview] C++ Catalyst vtkSocket::Receive stuck in >>> >>> loop on Windows >>> >>> Hi Simon, >>> >>> Is the Python dependency that you're trying to get rid of on the >>> Catalyst side or on the pvserver/GUI side? If I remember correctly >>> on the Catalyst side Python was required for the Live connection. >>> >>> Cheers, >>> >>> Andy >>> >>> On Wed, Jul 5, 2017 at 10:11 AM, Simon Klarmann >>> <[email protected]> wrote: >>> >>> Dear Members, >>> >>> I wanted to get rid of the dependency on Python. The connection by >>> pure C++ works just fine. >>> >>> The problem occurs when establishing the live connection to >>> Paraview, closing Paraview and then try to send some data again. >>> >>> I tracked it down to the vtkSocket class inside the method Receive. >>> After the connection is terminated on the Paraview side, e.g. by >>> closing Paraview, the call of vtkLiveInsituLink::InsituUpdate gets >>> stuck in the vtkSocket::Receive method. Even though I get a message >>> that the connection was terminated. >>> >>> A temporary fix for my case was to replace in Line 609 of the >>> vtkSocket.cxx if (nRecvd == 0) with if (nRecvd <= 0), because on >>> disconnection the return value of nRecvd is -1. Then everything >>> works well. >>> >>> I only used the following methods in the given order to transfer the >>> data: >>> >>> vtkLiveInsituLink::InsituUpdate >>> >>> vtkSMSourceProxy::UpdatePipeline >>> >>> vtkLiveInsituLink::InsituPostProcess >>> >>> Are there further steps to perform or is there a way to check if the >>> connection is still alive? >>> >>> Operating System: Windows 7, Visual Studio 2017 >>> >>> Thanks, >>> >>> Simon >>> >>> Dipl.-Ing. Simon Klarmann >>> >>> BAU- UND UMWELTINGENIEURWISSENSCHAFTEN >>> Technische Universität Darmstadt >>> >>> Fachgebiet Festkörpermechanik >>> >>> Tel.: +49 6151 16 – 22642 [2] >>> >>> Mail: [email protected] >>> >>> Franziska-Braun-Straße 7 >>> >>> Gebäude L5|01, Raum 542 >>> >>> 64287 Darmstadt >>> >>> _______________________________________________ >>> Powered by www.kitware.com [3] >>> >>> Visit other Kitware open-source projects at >>> http://www.kitware.com/opensource/opensource.html [4] >>> >>> Please keep messages on-topic and check the ParaView Wiki at: >>> http://paraview.org/Wiki/ParaView [5] >>> >>> Search the list archives at: http://markmail.org/search/?q=ParaView >>> [6] >>> >>> Follow this link to subscribe/unsubscribe: >>> http://public.kitware.com/mailman/listinfo/paraview [7] >>> >> >> >> >> Links: >> ------ >> [1] http://re.com >> [2] tel:+49%206151%201622642 >> [3] http://www.kitware.com >> [4] http://www.kitware.com/opensource/opensource.html >> [5] http://paraview.org/Wiki/ParaView >> [6] http://markmail.org/search/?q=ParaView >> [7] http://public.kitware.com/mailman/listinfo/paraview >> >
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Search the list archives at: http://markmail.org/search/?q=ParaView Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/paraview
