[lkml]   [2009]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectHR timers prevent an itimer from generating EINTR?

Mixing HR timers with itimers occasionally hides an EINTR from a
blocking syscall.


In my test program I have a High Resolution timer firing every one
second (with SA_RESTART) and I set an itimer (without SA_RESTART) to
fire after three seconds. I then execute a blocking system call (flock
in this case) and expect the three second itimer to interrupt the system
call with EINTR. However, I frequently notice that the itimer will fire
but it will not interrupt the blocking system call. There appears to be
a race between the HR timer firing and the itimer firing. If I offset
the HR timer frequency by a half second, the itimer always interrupts
the system call.

Kernel version:

These kernels both demonstrate the condition:

I do not see this condition on:


Test program:

The following program illustrates this condition:

Is this behavior expected?




Mike Heffner <>

 \ /
  Last update: 2009-09-04 23:37    [from the cache]
©2003-2014 Jasper Spaans. hosted at Digital Ocean