I have some strange behaviour occurring on Solaris 10 I am getting XIO errors
I Did a syscal trace and got this in part \
uname(0x7FD5EA54) = 1 uname(0x7FD5EB24) = 1 xstat(2, "/tmp/.X11-pipe/X0", 0x7FD5EF64) = 0 open("/tmp/.X11-pipe/X0", O_RDWR) = 11 ioctl(11, I_CANPUT, 0x00000000) = 1 uname(0x7FD5EA94) = 1 uname(0x7FD5EAC4) = 1 fcntl(11, F_SETFD, 0x00000001) = 0 access("/usr2/robert/.Xauthority", R_OK) = 0 open("/usr2/robert/.Xauthority", O_RDONLY) = 14 fstat64(14, 0x7FD5EC40) = 0 fstat64(14, 0x7FD5EB80) = 0 ioctl(14, TCGETA, 0x7FD5EC14) Err#25 ENOTTY read(14, "\0\0\004C0A80305\001 0\0".., 8192) = 1174 read(14, 0x080C413C, 8192) = 0 llseek(14, 0, SEEK_CUR) = 1174 close(14) = 0 writev(11, 0x7FD5F6F4, 4) = 48 fcntl(11, F_GETFL) = 2 fcntl(11, F_SETFL, FWRITE|FNONBLOCK) = 0 read(11, 0x7FD5F7AC, 8) Err#11 EAGAIN XIO: fatal IO error write(2, " X I O : f a t a l ".., 21) = 21 0 (write(2, " 0 (", 3) = 3 Error 0write(2, " E r r o r 0", 7) = 7 ) on X server "write(2, " ) o n X s e r v e".., 15) = 15 :0.0write(2, " : 0 . 0", 4) = 4 " write(2, " "\r\n", 3) = 3 after write(2, " a f t e r ", 12) = 12 0write(2, " 0", 1) = 1 requests (write(2, " r e q u e s t s (", 11) = 11 0write(2, " 0", 1) = 1 known processed) with write(2, " k n o w n p r o c e".., 23) = 23 0write(2, " 0", 1) = 1 events remaining. write(2, " e v e n t s r e m a".., 20) = 20 _exit(1)
The last X IO operation before the fatal error was called was a read n the X pipe which return error EAGAIN
The Man page for read(2) says the following
When attempting to read from an empty pipe (or FIFO):
o If no process has the pipe open for writing, read() returns 0 to indicate end-of-file.
o If some process has the pipe open for writing and O_NDELAY is set, read() returns 0.
o If some process has the pipe open for writing and O_NONBLOCK is set, read() returns -1 and sets errno to EAGAIN.
So, Its quite possible, likely that the X Server has the pipe open for writing but the pipe is empty which would return EAGAIN, why is this then treated as an error ???
More later.... Bob