falconindy / expac

alpm data extraction utility
91 stars 15 forks source link

expac hangs on a 'select' operation #4

Closed X-dark closed 11 years ago

X-dark commented 12 years ago

I haven't been able to reproduce this on other computer but on one of them whenever I run expac (with any arguments) it never returns.

With strace, I see the process keeps doing a 'select' operation which timeout each time:

[...]
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5322, si_status=0, si_utime=0, si_stime=0} ---
close(7)                                = 0
close(9)                                = 0
select(9, [6 8], [], NULL, {1, 0})      = 1 (in [8], left {0, 991841})
select(9, [8], [], NULL, {0, 0})        = 1 (in [8], left {0, 0})
read(8, "tru::1:1338890229:0:3:1:5\n", 1024) = 26
select(9, [6 8], [], NULL, {1, 0})      = 2 (in [6 8], left {0, 999996})
select(7, [6], [], NULL, {0, 0})        = 1 (in [6], left {0, 0})
read(6, "", 1024)                       = 0
close(6)                                = 0
select(9, [8], [], NULL, {0, 0})        = 1 (in [8], left {0, 0})
read(8, "", 1024)                       = 0
close(8)                                = 0
close(5)                                = 0
munmap(0x7f5a538f9000, 4096)            = 0
close(4)                                = 0
munmap(0x7f5a538f8000, 4096)            = 0
pipe([4, 5])                            = 0
fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f5a538fc9d0) = 5324
wait4(5324, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 5324
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5324, si_status=0, si_utime=0, si_stime=0} ---
close(5)                                = 0
read(4, "gpg (GnuPG) 2.0.19\nlibgcrypt 1.5"..., 79) = 79
close(4)                                = 0
pipe([4, 5])                            = 0
fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
readlink("/proc/self/fd/1", "/dev/pts/1", 63) = 10
stat("/dev/pts/1", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
pipe([6, 7])                            = 0
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f5a538fc9d0) = 5326
wait4(5326, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 5326
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5326, si_status=0, si_utime=0, si_stime=0} ---
close(5)                                = 0
close(7)                                = 0
select(7, [4 6], [], NULL, {1, 0})      = 1 (in [6], left {0, 991749})
select(7, [6], [], NULL, {0, 0})        = 1 (in [6], left {0, 0})
read(6, "tru::1:1338890229:0:3:1:5\n", 1024) = 26
select(7, [4 6], [], NULL, {1, 0})      = 2 (in [4 6], left {0, 999996})
select(5, [4], [], NULL, {0, 0})        = 1 (in [4], left {0, 0})
read(4, "", 1024)                       = 0
close(4)                                = 0
select(7, [6], [], NULL, {0, 0})        = 1 (in [6], left {0, 0})
read(6, "", 1024)                       = 0
close(6)                                = 0
pipe([4, 5])                            = 0
fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f5a538fc9d0) = 5328
wait4(5328, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 5328
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5328, si_status=0, si_utime=0, si_stime=0} ---
close(5)                                = 0
read(4, "gpg (GnuPG) 2.0.19\nlibgcrypt 1.5"..., 79) = 79
close(4)                                = 0
pipe([4, 5])                            = 0
fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
readlink("/proc/self/fd/1", "/dev/pts/1", 63) = 10
stat("/dev/pts/1", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
pipe([6, 7])                            = 0
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f5a538fc9d0) = 5330
wait4(5330, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 5330
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5330, si_status=0, si_utime=0, si_stime=0} ---
close(5)                                = 0
close(7)                                = 0
select(7, [4 6], [], NULL, {1, 0})      = 0 (Timeout)
select(7, [4 6], [], NULL, {1, 0})      = 0 (Timeout)
select(7, [4 6], [], NULL, {1, 0})      = 0 (Timeout)
select(7, [4 6], [], NULL, {1, 0})      = 0 (Timeout)
select(7, [4 6], [], NULL, {1, 0})      = 0 (Timeout)
select(7, [4 6], [], NULL, {1, 0})      = 0 (Timeout)
[...]

I'm running an uptodate Arch x86_64.

falconindy commented 12 years ago

The 'select' is coming from gnupg, which might indicate a problem with your keyring. expac sets the pacman.conf equivalent of "SigLevel = DatabaseOptional PackageNever". I suggest looking to see if any of your repos are legitimately signed.

Strongly suspect this isn't anything that needs fixing in expac.

X-dark commented 12 years ago

Thanks for the info. I am investigating it and will report back.

X-dark commented 12 years ago

OK. It is happening whenever I have a repo with signed database enabled. If I disable database signature verification on [xyne] repo (only repo with signed db I use) everything works fine.