[BUG]: Use of select in Boost ASIO on QNX limits number of connections silently
- Dominant language
- C++
- Stars
- 1.4k
- Forks
- 826
- PR merge metrics
- No merged PRs in 30d
Description
### vSomeip Version
v3.6.0
### Boost Version
1.82
### Environment
QNX
### Describe the bug
Boost ASIO uses `select` in QNX which can only support a limited number of FD:
https://www.qnx.com/developers/docs/8.0/com.qnx.doc.neutrino.lib_ref/topic/s/select.html
> QNX recommends that you use [poll()](https://www.qnx.com/developers/docs/8.0/com.qnx.doc.neutrino.lib_ref/topic/p/poll.html) instead of select() to examine file descriptor sets.
> The FD_SETSIZE setting determines the highest file descriptor number that the fd_set structure supports and must be set to one more than the highest file descriptor number that the fd_set objects use. The default FD_SETSIZE value of 256 is defined in . However, by default, QNX OS allows a maximum of 1000 file descriptors per process, which well exceeds this value. Using poll() instead of select() avoids errors caused by using the default value, and also is more efficient at handling a sparse list of file descriptors.
this causes failure when receiving messages over SOME/IP on QNX when a certain number of connections is reached.
### Reproduction Steps
_No response_
### Expected behaviour
_No response_
### Logs and Screenshots
_No response_
Contributor guide
Research direction
Start by reproducing the connection-limit failure on QNX with vSomeIP 3.6.0, then inspect how Boost ASIO uses select() and compare it with QNX's poll() guidance. Done means message reception continues beyond the select() file-descriptor limit without silent connection failures, with validation on QNX.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 38/100