Problem: zmq_abort() may be called on Windows if polling fails #4809
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes occasional
abort()
s on Windows platform caused by unhandled errors returned byWSAPoll()
, causing occasional crashes.Problem
Error handling for the
poll()
function is left to the caller, that should remember to useWSAGetLastError()
instead of usingerrno
to find out the error reason. This requires#ifdef ZMQ_HAVE_WINDOWS ... #endif
and Windows-specific code to be done for eachpoll()
invocation.Solution
On Windows platform, implement custom WSA error to errno translation in the poll() function itself. The goal is to make Windows-specific poll() to appear more Unixy to the callers.
Changes
poll()
function implementation inwindows.hpp
Platforms affected
Checklist