Messages in this thread |  | | Date | Sun, 17 Nov 1996 00:27:58 -0500 | From | "Theodore Y. Ts'o" <> | Subject | Re: X-Inside posts Linux bug, has it been reported anywhere else? |
| |
From: roell@xinside.com (Thomas Roell) Date: 12 Nov 1996 09:27:42 -0700
We found now the problem. Basically it's a LINUX kernel bug. It seems to appear at least on kernels between 2.0.0 and 2.0.22. Older kernels do work fine. In case I don't bore anybody, here what's really happening. If you do a read() system call in a non-blocking device, and it get's interrupted in the system call (which kind of should not happen at all), then a posix compilant system (and LINUX for that matter) should return an error of EAGAIN. However the kernels mentioned above randomly return either EINTR (which is for blocking devices) or ERESTARTSYS, which the docs say "Should never be seen by user programs".
Umm... that sounds interesting. What evidence do you have to demonstrate this? (You realize that just because strace shows ERESTARTSYS doesn't mean that the user program ever gets the ERESTARTSYS; the system call just gets restarted.)
What device were you finding this before? I've just desk-checked the tty N_TTY code, and it sure doesn't look like it has this problem. Each device implements its own reader code, though, so you really need to specify which device you were using.
- Ted
|  |