[CDBI] EAGAIN loop

Dave Howorth dhoworth at mrc-lmb.cam.ac.uk
Thu Feb 23 16:04:27 GMT 2006


I've got a weird problem - I don't begin to know what's happening and 
wonder if anybody has seen anything like this before?

I'm running a script that uses Class::DBI to access a MySQL database. 
When I run it after a few minutes it goes into a loop. Up to that point 
it seems to be behaving normally and printing progress information etc. 
The point at which it starts looping is different each time (i.e. 
apparently no dependence on my data). An strace shows it is trying to 
access the database (on another machine) and getting repeated EAGAIN 
errors. Here's a sample:

write(4, "q\0\0\0\3SELECT id\nFROM   identifier"..., 117) = 117
read(4, "\1\0\0\1", 4)                  = 4
read(4, "\1", 1)                        = 1
read(4, "\31\0\0\2", 4)                 = 4
read(4, "\videntifiers\2id\3\n\0\0\1\3\3#B\0", 25) = 25
read(4, "\1\0\0\3", 4)                  = 4
read(4, "\376", 1)                      = 1
read(4, "\10\0\0\4", 4)                 = 4
read(4, "\0072057736", 8)               = 8
read(4, "\1\0\0\5", 4)                  = 4
read(4, "\376", 1)                      = 1
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
read(4, 0x8b1cae0, 8192)                = -1 EAGAIN (Resource 
temporarily unavailable)
fcntl64(4, F_SETFL, O_RDWR)             = 0
write(4, "\1\0\0\0\16", 5)              = 5
read(4, "\5\0\0\1", 4)                  = 4
read(4, "\0\0\0\2\0", 5)                = 5
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
read(4, 0x8b1cae0, 8192)                = -1 EAGAIN (Resource 
temporarily unavailable)
fcntl64(4, F_SETFL, O_RDWR)             = 0
write(4, "6\0\0\0\3SELECT symbol\nFROM   identi"..., 58) = 58
read(4, "\1\0\0\1", 4)                  = 4
read(4, "\1", 1)                        = 1
read(4, "\35\0\0\2", 4)                 = 4
read(4, "\videntifiers\6symbol\3(\0\0\1\375\3\211@\0", 29) = 29
read(4, "\1\0\0\3", 4)                  = 4
read(4, "\376", 1)                      = 1
read(4, "\7\0\0\4", 4)                  = 4
read(4, "\6P01952", 7)                  = 7
read(4, "\1\0\0\5", 4)                  = 4
read(4, "\376", 1)                      = 1
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
read(4, 0x8b1cae0, 8192)                = -1 EAGAIN (Resource 
temporarily unavailable)
fcntl64(4, F_SETFL, O_RDWR)             = 0
write(4, "\1\0\0\0\16", 5)              = 5
read(4, "\5\0\0\1", 4)                  = 4
read(4, "\0\0\0\2\0", 5)                = 5
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
read(4, 0x8b1cae0, 8192)                = -1 EAGAIN (Resource 
temporarily unavailable)
fcntl64(4, F_SETFL, O_RDWR)             = 0

The database is still usable from other processes on the m/c that's 
running the script so there's apparently no problem with the database or 
connections to it.

Anybody have any ideas where to look next?

Thanks, Dave




More information about the ClassDBI mailing list