> 
> > Which well explains why I get empty depslist after that.
> > Comments?
> 
> No for why the second time it does not read.
>



It does not look like urpmi/rpmtools error, but I wonder what in system
is causing it.

Here is strace for the first read:

13316 write(2, "reading hdlist file [/var/lib/ur"..., 54) = 54
13316 pipe([3, 4])                      = 0
13316 fcntl64(3, F_GETFL)               = 0 (flags O_RDONLY)
13316 fstat64(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
13316 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 
0) = 0x400f4000
13316 _llseek(3, 0, 0xbffff6f0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
13316 fcntl64(4, F_GETFL)               = 0x1 (flags O_WRONLY)
13316 fstat64(4, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
13316 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 
0) = 0x400f5000
13316 _llseek(4, 0, 0xbffff6f0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
13316 fcntl64(3, F_SETFD, FD_CLOEXEC)   = 0
13316 fcntl64(4, F_SETFD, FD_CLOEXEC)   = 0
13316 fork()                            = 13320
13316 close(4)                          = 0
13316 munmap(0x400f5000, 4096)          = 0
13316 dup(3)                            = 4
13316 gettimeofday({1007713279, 94288}, NULL) = 0
13316 fstat64(4, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
13316 select(5, [4], NULL, NULL, {1, 0} <unfinished ...>
...
13316 <... select resumed> )            = 1 (in [4], left {0, 800000})
13316 gettimeofday({1007713279, 297969}, NULL) = 0
13316 read(4, "\216\255\350\1\0\0\0\0\0\0\0008\0\0>\\", 16) = 16
13316 gettimeofday({1007713279, 298667}, NULL) = 0
13316 brk(0x82e7000)                    = 0x82e7000
13316 fstat64(4, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
13316 select(5, [4], NULL, NULL, {1, 0}) = 1 (in [4], left {1, 0})
13316 gettimeofday({1007713279, 300460}, NULL) = 0
.... etc

here is strace for the second read:

13316 write(2, "reading hdlist file [/var/lib/ur"..., 54) = 54
13316 pipe([3, 4])                      = 0
13316 fcntl64(3, F_GETFL)               = 0 (flags O_RDONLY)
13316 fstat64(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
13316 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 
0) = 0x400f4000
13316 _llseek(3, 0, 0xbffff6f0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
13316 fcntl64(4, F_GETFL)               = 0x1 (flags O_WRONLY)
13316 fstat64(4, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
13316 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 
0) = 0x400f5000
13316 _llseek(4, 0, 0xbffff6f0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
13316 fcntl64(3, F_SETFD, FD_CLOEXEC)   = 0
13316 fcntl64(4, F_SETFD, FD_CLOEXEC)   = 0
13316 fork()                            = 13322
13316 close(4)                          = 0
13316 munmap(0x400f5000, 4096)          = 0
13316 dup(3)                            = 4
13316 gettimeofday({1007713307, 940170}, NULL) = 0
13316 fstat64(4, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
13316 select(5, [4], NULL, NULL, {1, 0} <unfinished ...>
...
13316 <... select resumed> )            = 0 (Timeout)
13316 gettimeofday({1007713308, 941478}, NULL) = 0
13316 close(4)                          = 0
13316 gettimeofday({1007713308, 941989}, NULL) = 0
13316 close(3)                          = 0
13316 munmap(0x400f4000, 4096)          = 0
13316 wait4(13322,  <unfinished ...>


So it may be that due to low memory conditions on this system (32MB RAM,
Pentium 166, slow IDE drive) the second select simply timeouts. It is
obviously has something to do with kernel scheduling as it was not
always the case. I do not know if timeout comes from perl or your
program (it seems that select happens inside of headerRead but I do not
know from which package it is) so is it possible to disable timeout
here?

-andrej

Reply via email to