Poll(2) system call returns late in multithreaded applications (Doc ID 1021715.1)

Last updated on AUGUST 01, 2016

Applies to:

OpenSolaris Operating System - Version 2008.05 and later
Solaris Operating System - Version 10 3/05 and later
All Platforms

Symptoms

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).

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms