Hi Goodwin,

There is a bug in vtkSocket::Receive, where the error condition is not tested for in return from recv socket call on *nix systems. It may or may not be the source of/related to the issue that you are having but it's certainly could cause ParaView to hang silently. Sorry that I didn't submit the patch sooner, am way behind on the "new" git work flow. I've filed the bug report http://www.paraview.org/Bug/view.php?id=12955, hope it can make it into 3.14.

Burlen

On 02/21/2012 09:18 AM, Goodwin Lawlor wrote:
Following up on this.

I built a debug 32bit version of ParaView 3.14.0-RC2 client on Win7

It hangs on connecting to a remote server (linux 64bit) too.

Here's the backtrace:

     ntdll.dll!7714f8c1()
     mswsock.dll!73be6f0f()
     mswsock.dll!73be76a6()
     ws2_32.dll!763170fa()
     wsock32.dll!73fe17db()
> paraview.exe!vtkSocket::Receive(void * data, int length, int readFully) Line 607 + 0x1c bytes C++ paraview.exe!vtkSocketCommunicator::ReceivePartialTagged(void * data, int wordSize, int numWords, int tag, const char * logName) Line 907 + 0x19 bytes C++ paraview.exe!vtkSocketCommunicator::ReceiveTagged(void * data, int wordSize, int numWords, int tag, const char * logName) Line 897 C++ paraview.exe!vtkSocketCommunicator::ReceiveVoidArray(void * data, int length, int type, int remoteProcessId, int tag) Line 367 + 0x34 bytes C++ paraview.exe!vtkCommunicator::Receive(unsigned char * data, int maxlength, int remoteHandle, int tag) Line 214 + 0x21 bytes C++ paraview.exe!vtkCommunicator::Receive(vtkMultiProcessStream & stream, int remoteId, int tag) Line 1658 + 0x1f bytes C++

paraview.exe!vtkMultiProcessController::Receive(vtkMultiProcessStream & stream, int remoteId, int tag) Line 1329 + 0x17 bytes C++

paraview.exe!vtkSMSessionClient::PullState(paraview_protobuf::Message * message) Line 590 C++

paraview.exe!vtkSMRemoteObject::PullState(paraview_protobuf::Message * msg) Line 158 + 0x2f bytes C++ paraview.exe!vtkSMProxyDefinitionManager::SynchronizeDefinitions() Line 87 + 0xc bytes C++

paraview.exe!vtkSMPluginManager::LoadPluginConfigurationXMLFromString(const char * xmlcontents, vtkSMSession * session, bool remote) Line 179 C++ paraview.exe!pqPluginManager::loadPluginsFromSettings(pqServer * server) Line 163 + 0x7b bytes C++ paraview.exe!pqPluginManager::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 63 + 0x11 bytes C++ QtCored4.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3547 + 0x2e bytes C++ paraview.exe!pqServerManagerModel::preServerAdded(pqServer * _t1) Line 210 + 0x17 bytes C++ paraview.exe!pqServerManagerModel::onConnectionCreated(int id) Line 472 C++ paraview.exe!pqServerManagerModel::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 159 + 0x18 bytes C++ QtCored4.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3547 + 0x2e bytes C++ paraview.exe!pqServerManagerObserver::connectionCreated(int _t1) Line 171 + 0x17 bytes C++ paraview.exe!pqServerManagerObserver::connectionCreated(vtkObject * __formal, vtkObject * __formal, vtkObject * __formal, void * callData) Line 113 C++ paraview.exe!pqServerManagerObserver::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 91 + 0x2c bytes C++ QtCored4.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3547 + 0x2e bytes C++ paraview.exe!vtkQtConnection::EmitExecute(vtkObject * _t1, unsigned long _t2, void * _t3, void * _t4, vtkCommand * _t5) Line 104 + 0x17 bytes C++ paraview.exe!vtkQtConnection::Execute(vtkObject * caller, unsigned long e, void * call_data) Line 75 C++ paraview.exe!vtkQtConnection::DoCallback(vtkObject * vtk_obj, unsigned long event, void * client_data, void * call_data) Line 63 C++ paraview.exe!vtkCallbackCommand::Execute(vtkObject * caller, unsigned long event, void * callData) Line 42 + 0x1d bytes C++ paraview.exe!vtkSubjectHelper::InvokeEvent(unsigned long event, void * callData, vtkObject * self) Line 602 + 0x1f bytes C++ paraview.exe!vtkObject::InvokeEvent(unsigned long event, void * callData) Line 770 + 0x17 bytes C++ paraview.exe!vtkProcessModule::RegisterSession(vtkSession * session) Line 279 C++ paraview.exe!vtkSMSession::ConnectToRemote(const char * hostname, int port, bool allowRemoteRendering) Line 262 + 0x12 bytes C++ paraview.exe!vtkSMSession::ConnectToRemote(const char * hostname, int port) Line 247 + 0xf bytes C++ paraview.exe!pqObjectBuilder::createServer(const pqServerResource & resource) Line 930 + 0x7a bytes C++ paraview.exe!pqServerLauncher::connectToPrelaunchedServer() Line 520 + 0xc bytes C++ paraview.exe!pqServerLauncher::connectToServer() Line 488 + 0x17 bytes C++

paraview.exe!pqServerConnectReaction::connectToServerUsingConfiguration(const pqServerConfiguration & config) Line 114 + 0x8 bytes C++ paraview.exe!pqServerConnectReaction::connectToServer() Line 92 + 0xe bytes C++ paraview.exe!pqServerConnectReaction::connectToServerWithWarning() Line 83 C++ paraview.exe!pqServerConnectReaction::onTriggered() Line 66 + 0x13 bytes C++ paraview.exe!pqReaction::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 52 + 0xf bytes C++ QtCored4.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3547 + 0x2e bytes C++ QtGuid4.dll!QAction::triggered(bool _t1) Line 277 + 0x15 bytes C++ QtGuid4.dll!QAction::activate(QAction::ActionEvent event) Line 1259 C++
     QtGuid4.dll!QAction::trigger()  Line 218 + 0x11 bytes    C++
     QtGuid4.dll!QToolButton::nextCheckState()  Line 1145    C++
     QtGuid4.dll!QAbstractButtonPrivate::click()  Line 529    C++
QtGuid4.dll!QAbstractButton::mouseReleaseEvent(QMouseEvent * e) Line 1122 C++ QtGuid4.dll!QToolButton::mouseReleaseEvent(QMouseEvent * e) Line 719 C++
     QtGuid4.dll!QWidget::event(QEvent * event)  Line 8362    C++
     QtGuid4.dll!QAbstractButton::event(QEvent * e)  Line 1081    C++
     QtGuid4.dll!QToolButton::event(QEvent * event)  Line 1161    C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 4550 + 0x11 bytes C++ QtGuid4.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 4093 + 0x2f bytes C++ QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver, QEvent * event) Line 876 + 0x15 bytes C++ QtCored4.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Line 234 + 0x38 bytes C++ QtGuid4.dll!QApplicationPrivate::sendMouseEvent(QWidget * receiver, QMouseEvent * event, QWidget * alienWidget, QWidget * nativeWidget, QWidget * * buttonDown, QPointer<QWidget> & lastMouseReceiver, bool spontaneous) Line 3159 + 0xe bytes C++ QtGuid4.dll!QETWidget::translateMouseEvent(const tagMSG & msg) Line 3363 + 0x2a bytes C++ QtGuid4.dll!QtWndProc(HWND__ * hwnd, unsigned int message, unsigned int wParam, long lParam) Line 1696 + 0xc bytes C++
     user32.dll!767862fa()
     user32.dll!76786d3a()
     user32.dll!76786ce9()
     user32.dll!767877c4()
     user32.dll!7678788a()
QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 809 C++ QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 1202 + 0x15 bytes C++ QtCored4.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 150 C++ QtCored4.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 204 + 0x2d bytes C++
     QtCored4.dll!QCoreApplication::exec()  Line 1148 + 0x15 bytes
     QtGuid4.dll!QApplication::exec()  Line 3812    C++
     paraview.exe!main(int argc, char * * argv)  Line 81 + 0x8 bytes
paraview.exe!WinMain(HINSTANCE__ * instance, HINSTANCE__ * prevInstance, char * __formal, int cmdShow) Line 131 + 0x12 bytes
     paraview.exe!__tmainCRTStartup()  Line 547 + 0x2c bytes    C
     paraview.exe!WinMainCRTStartup()  Line 371    C



On 31/01/2012 08:11, Goodwin Lawlor wrote:
Utkarsh & John,

Thanks for the tips! I'll investigate further.

FWIW, this is how I checked out the source code:

$ git checkout -b release-3.12.0 tags/v3.12.0
$ git submodule update

Initially, I hadn't updated the submodule and did hit the version
incompatibility thing.

Goodwin

On 31/01/2012 03:44, Biddiscombe, John A. wrote:
I've had the hanging problem a lot. Last time I found that my VTK ref
was not quite the same as the ref that the paraview repo was asking
for. When I corrected it, all was well, but it seems very sensitive to
changes which (in my opinion) shouldn't have made any difference.
Make sure git submodule update/status doesn't show any grotesque
incompatibilities. It might help ...

JB

-----Original Message-----
From: paraview-boun...@paraview.org
[mailto:paraview-boun...@paraview.org] On Behalf Of Utkarsh Ayachit
Sent: 30 January 2012 14:38
To: Goodwin Lawlor
Cc: paraview@paraview.org
Subject: Re: [Paraview] ParaView 3.12.0 hanging

The server is expected to complain once the client is killed. The real
issue is the hanging part. Are these debug builds? Is it possible to
produce a backtrace?

Utkarsh

On Mon, Jan 30, 2012 at 7:13 AM, Goodwin Lawlor<goodwin.law...@ucd.ie>
wrote:
Hi All,

We upgraded pvserver from 3.10 to 3.12

Now when the client (Win7 64bit) connects remotely to the pvserver
(linux 64it), it hangs.

When you kill the client, the server complains:

Waiting for client
Connection URL: cs://localhost:11111
Client connected.
ERROR: In
/home/ec2-user/vol_30GB/codes/ParaView-3.12.0/VTK/Common/vtkSocket.cxx
, line
572
vtkClientSocket (0x1208010): Socket error in call to send. Connection
reset by peer.

ERROR: In
/home/ec2-user/vol_30GB/codes/ParaView-3.12.0/VTK/Parallel/vtkSocketCo
mmunicator.cxx,
line 737
vtkSocketCommunicator (0x10f6da0): Could not send message.

ERROR: In
/home/ec2-user/vol_30GB/codes/ParaView-3.12.0/VTK/Parallel/vtkSocketCo
mmunicator.cxx,
line 766
vtkSocketCommunicator (0x10f6da0): Could not receive tag. 1

GetIsConnected 1
Exiting...


Any ideas?

Thanks,

Goodwin
_______________________________________________
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

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

diff --git a/Common/vtkSocket.cxx b/Common/vtkSocket.cxx
index 43290fa..a0e248d 100644
--- a/Common/vtkSocket.cxx
+++ b/Common/vtkSocket.cxx
@@ -612,21 +612,23 @@ int vtkSocket::Receive(void* data, int length, int readFully/*=1*/)
       return 0;
       }
 
-#if defined(_WIN32) && !defined(__CYGWIN__)
-    if ((nRecvd == vtkSocketErrorReturnMacro)
-      && (WSAGetLastError() == WSAENOBUFS))
+    if (nRecvd == vtkSocketErrorReturnMacro)
       {
-      // On long messages, Windows recv sometimes fails with WSAENOBUFS, but
-      // will work if you try again.
-      if ((trys++ < 1000))
+#if defined(_WIN32) && !defined(__CYGWIN__)
+      if (WSAGetLastError() == WSAENOBUFS)
         {
-        Sleep(1);
-        continue;
+        // On long messages, Windows recv sometimes fails with WSAENOBUFS, but
+        // will work if you try again.
+        if ((trys++ < 1000))
+          {
+          Sleep(1);
+          continue;
+          }
         }
+#endif
       vtkSocketErrorMacro(vtkErrnoMacro, "Socket error in call to recv.");
       return 0;
       }
-#endif
 
     total += nRecvd;
     }
_______________________________________________
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

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to