When one instance in a simulation run crashes, often the other instances report errors like (Python):
libmuscle.mcp.tcp_util.SocketClosed: Socket closed while receiving
or (C++):
terminate called after throwing an instance of 'std::runtime_error'
what(): Error receiving data on socket
These errors can be a red herring, leading users of libmuscle to think that the component with the socket error was misbehaving, while actually the root cause is in another component.
To change:
Python: capture SocketClosed errors and add additional debugging information (like which peer instance it was connected to, etc.)
C++: capture std::runtime_error (thrown in mcp/tcp_util.cpp) and add the same additional debugging information
When one instance in a simulation run crashes, often the other instances report errors like (Python):
or (C++):
These errors can be a red herring, leading users of libmuscle to think that the component with the socket error was misbehaving, while actually the root cause is in another component.
To change:
mcp/tcp_util.cpp
) and add the same additional debugging information