Poll(2) system call returns late in multithreaded applications
(Doc ID 1021715.1)
Last updated on SEPTEMBER 13, 2019
Applies to:Solaris Operating System - Version 10 3/05 and later
OpenSolaris Operating System - Version 2008.05 and later
Highly multi-threaded applications using poll(2) as a timer can return late when close(2) is called on a file descriptor that has an already active system call on it.
As outlined in CR 6850147, when a multithreaded application makes a call to close(2) when there is an active system call on that file descriptor all threads in that process are stopped while various kernel structures are updated so that the active system calls will return a failure due to the closure of that file descriptor. The more multi-threaded the process is, the larger the impact that this has. In particular it can delay the return of a poll(2) system call that is being used for critical timing regardless of the scheduling class it is in (i.e. having that thread in RT class does not help).
To view full details, sign in with your My Oracle Support account.
Don't have a My Oracle Support account? Click to get started!