A firewall or certain network control programs have interrupted the local loopback connection, causing the TCP connection within zmq::signaler_t to be disconnected. This triggers an exception, leading to a crash in the program that is loading libzmq.
Environment
libzmq version: 4.3.5
Operating System: Windows 11
Minimal Test Code/Steps to Reproduce the Issue
Start the HttpDebuggerPro service.
Check the status of the HttpDebuggerSdk driver to see if it is running: sc query HttpDebuggerSdk.
Run test_xpub_welcome_msg.exe and let it sleep before test_context_socket_close.
Stop the HttpDebuggerSdk driver.
Stop the HttpDebuggerPro service.
test_xpub_welcome_msg.exe crashes.
Actual Results? (If applicable, include assertion messages and call stack)
Inability to prevent a third-party program from interrupting the loopback connection. libzmq should have self-healing capabilities, and the TCP connection within signaler_t should support reconnection or be returned to the higher-level caller instead of causing a crash in the calling layer.
The internal control socket on the loopback needs to work, otherwise nothing will work. It's internal-only so either allow it or use a windows build with af_unix.
Problem Description
A firewall or certain network control programs have interrupted the local loopback connection, causing the TCP connection within zmq::signaler_t to be disconnected. This triggers an exception, leading to a crash in the program that is loading libzmq.
Environment
libzmq version: 4.3.5 Operating System: Windows 11
Minimal Test Code/Steps to Reproduce the Issue
Actual Results? (If applicable, include assertion messages and call stack)
Assertion failed: Assertion failed: nbytes == sizeof (dummy) (..\src\signaler.cpp:375) Assertion failed: Assertion failed: nbytes == sizeof (dummy) (..\src\signaler.cpp:375)
Expected Results
Inability to prevent a third-party program from interrupting the loopback connection. libzmq should have self-healing capabilities, and the TCP connection within signaler_t should support reconnection or be returned to the higher-level caller instead of causing a crash in the calling layer.