On 2010-02-04 11:10, Marcus Meissner wrote:
On Thu, Feb 04, 2010 at 10:53:20AM +0100, Dan Kopparhed wrote:
Hi, I ran into a problem that I suspect may be a bug in dnssec-keygen. Can someone confirm this?
I was trying to generate keys with the genDDNSkey script, but the script just freezes. So I had a look at the script and discovered that the problem occurs when calling dnssec-keygen. It sleeps, seemingly stuck waiting 4-ever (well, I honestly only tried for a few minutes). Actually, when trying this over and over again, it succeeded once out of something like 15+ attempts. I changed nothing between trials.
In opensuse 11.1, latest bind update, running this command immediately generates private and public keys Ktest.* /usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -r /dev/random -n USER test
In opensuse 11.2, fully patched, the same command just falls asleep until killed.
The sleep might be due to reads from /dev/random, which blocks until enough randomness is there.
Can you run strace and see where it blocks?
OK. strace:
--------------------------------------------------------------------------------------------
execve("/usr/sbin/dnssec-keygen", ["/usr/sbin/dnssec-keygen", "-a",
"HMAC-MD5", "-b", "512", "-r", "/dev/random", "-n", "USER", "test"], [/*
19 vars */]) = 0
brk(0) = 0x7fd9efe44000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fd9efc3a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fd9efc39000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=108786, ...}) = 0
mmap(NULL, 108786, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd9efc1e000
close(3) = 0
open("/usr/lib64/libdns.so.53", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0B\2\0\0\0\0\0"..., 832)
= 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1497256, ...}) = 0
mmap(NULL, 3595408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fd9ef6b0000
fadvise64(3, 0, 3595408, POSIX_FADV_WILLNEED) = 0
mprotect(0x7fd9ef817000, 2097152, PROT_NONE) = 0
mmap(0x7fd9efa17000, 28672, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x167000) = 0x7fd9efa17000
close(3) = 0
open("/usr/lib64/libisc.so.50", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\350\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=354120, ...}) = 0
mmap(NULL, 2449840, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fd9ef459000
fadvise64(3, 0, 2449840, POSIX_FADV_WILLNEED) = 0
mprotect(0x7fd9ef4ae000, 2093056, PROT_NONE) = 0
mmap(0x7fd9ef6ad000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x54000) = 0x7fd9ef6ad000
mmap(0x7fd9ef6af000, 432, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd9ef6af000
close(3) = 0
open("/lib64/libc.so.6", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\353\1\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1408560, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fd9efc1d000
mmap(NULL, 3516488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fd9ef0fe000
fadvise64(3, 0, 3516488, POSIX_FADV_WILLNEED) = 0
mprotect(0x7fd9ef24f000, 2097152, PROT_NONE) = 0
mmap(0x7fd9ef44f000, 20480, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x151000) = 0x7fd9ef44f000
mmap(0x7fd9ef454000, 18504, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd9ef454000
close(3) = 0
open("/usr/lib64/libcrypto.so.0.9.8", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\245\6\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=1605840, ...}) = 0
mmap(NULL, 3715896, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fd9eed72000
fadvise64(3, 0, 3715896, POSIX_FADV_WILLNEED) = 0
mprotect(0x7fd9eeed5000, 2093056, PROT_NONE) = 0
mmap(0x7fd9ef0d4000, 155648, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x162000) = 0x7fd9ef0d4000
mmap(0x7fd9ef0fa000, 13112, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd9ef0fa000
close(3) = 0
open("/lib64/libpthread.so.0", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360X\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=131260, ...}) = 0
mmap(NULL, 2208640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fd9eeb56000
fadvise64(3, 0, 2208640, POSIX_FADV_WILLNEED) = 0
mprotect(0x7fd9eeb6c000, 2097152, PROT_NONE) = 0
mmap(0x7fd9eed6c000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fd9eed6c000
mmap(0x7fd9eed6e000, 13184, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd9eed6e000
close(3) = 0
open("/usr/lib64/libxml2.so.2", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\351\2\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1360392, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fd9efc1c000
mmap(NULL, 3460792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fd9ee809000
fadvise64(3, 0, 3460792, POSIX_FADV_WILLNEED) = 0
mprotect(0x7fd9ee94c000, 2093056, PROT_NONE) = 0
mmap(0x7fd9eeb4b000, 40960, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x142000) = 0x7fd9eeb4b000
mmap(0x7fd9eeb55000, 3768, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd9eeb55000
close(3) = 0
open("/lib64/libdl.so.2", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\r\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14872, ...}) = 0
mmap(NULL, 2109696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fd9ee605000
fadvise64(3, 0, 2109696, POSIX_FADV_WILLNEED) = 0
mprotect(0x7fd9ee607000, 2097152, PROT_NONE) = 0
mmap(0x7fd9ee807000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fd9ee807000
close(3) = 0
open("/lib64/libz.so.1", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\36\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=88640, ...}) = 0
mmap(NULL, 2183664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fd9ee3ef000
fadvise64(3, 0, 2183664, POSIX_FADV_WILLNEED) = 0
mprotect(0x7fd9ee403000, 2097152, PROT_NONE) = 0
mmap(0x7fd9ee603000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7fd9ee603000
close(3) = 0
open("/lib64/libm.so.6", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`>\0\0\0\0\0\0"..., 832)
= 832
fstat(3, {st_mode=S_IFREG|0755, st_size=346560, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fd9efc1b000
mmap(NULL, 2441400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fd9ee19a000
fadvise64(3, 0, 2441400, POSIX_FADV_WILLNEED) = 0
mprotect(0x7fd9ee1ee000, 2093056, PROT_NONE) = 0
mmap(0x7fd9ee3ed000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x53000) = 0x7fd9ee3ed000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fd9efc1a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fd9efc19000
arch_prctl(ARCH_SET_FS, 0x7fd9efc196f0) = 0
mprotect(0x7fd9ee3ed000, 4096, PROT_READ) = 0
mprotect(0x7fd9ee603000, 4096, PROT_READ) = 0
mprotect(0x7fd9ee807000, 4096, PROT_READ) = 0
mprotect(0x7fd9eeb4b000, 32768, PROT_READ) = 0
mprotect(0x7fd9eed6c000, 4096, PROT_READ) = 0
mprotect(0x7fd9ef0d4000, 57344, PROT_READ) = 0
mprotect(0x7fd9ef44f000, 16384, PROT_READ) = 0
mprotect(0x7fd9ef6ad000, 4096, PROT_READ) = 0
mprotect(0x7fd9efa17000, 4096, PROT_READ) = 0
mprotect(0x7fd9efe42000, 4096, PROT_READ) = 0
mprotect(0x7fd9efc3b000, 4096, PROT_READ) = 0
munmap(0x7fd9efc1e000, 108786) = 0
set_tid_address(0x7fd9efc197c0) = 6097
set_robust_list(0x7fd9efc197d0, 0x18) = 0
futex(0x7fff16b46f1c, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7fff16b46f1c, 0x189 /* FUTEX_??? */, 1, NULL, 7fd9efc196f0) = -1
EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0x7fd9eeb5b780, [], SA_RESTORER|SA_SIGINFO,
0x7fd9eeb64c00}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7fd9eeb5b810, [],
SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fd9eeb64c00}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
futex(0x7fd9ef6aefc4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
brk(0) = 0x7fd9efe44000
brk(0x7fd9efe65000) = 0x7fd9efe65000
open("/usr/share/locale/en_US.UTF-8/libdns.cat", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libdns.cat", O_RDONLY) =
-1 ENOENT (No such file or directory)
open("/usr/share/locale/en/libdns.cat", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libdns.cat", O_RDONLY) = -1
ENOENT (No such file or directory)
futex(0x7fd9efa1d328, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/usr/share/locale/en_US.UTF-8/libisc.cat", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libisc.cat", O_RDONLY) =
-1 ENOENT (No such file or directory)
open("/usr/share/locale/en/libisc.cat", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libisc.cat", O_RDONLY) = -1
ENOENT (No such file or directory)
futex(0x7fd9ef6aef70, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7fd9ef6af040, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7fd9efa1d39c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7fd9efbd8000
stat("/dev/random", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 8), ...}) = 0
open("/dev/random", O_RDONLY|O_NONBLOCK) = 3
fcntl(3, F_GETFL) = 0x8800 (flags
O_RDONLY|O_NONBLOCK|O_LARGEFILE)
fcntl(3, F_SETFL, O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 0
open("/usr/share/locale/en_US.UTF-8/libdst.cat", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libdst.cat", O_RDONLY) =
-1 ENOENT (No such file or directory)
open("/usr/share/locale/en/libdst.cat", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libdst.cat", O_RDONLY) = -1
ENOENT (No such file or directory)
futex(0x7fd9efa1dbe0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7fd9efa1dbe4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/etc/ssl/openssl.cnf", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=9374, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fd9efc38000
read(4, "#\n# OpenSSL example configuratio"..., 4096) = 4096
read(4, "_name ]\ncountryName\t\t\t= Country "..., 4096) = 4096
read(4, " an SSL server.\n# nsCertType\t\t\t="..., 4096) = 1182
read(4, "", 4096) = 0
close(4) = 0
munmap(0x7fd9efc38000, 4096) = 0
read(3, "\313\375\246\27FFX\371\253\354\"Y\214\264\204\232", 64) = 16
read(3, 0x7fff16b46330, 48) = -1 EAGAIN (Resource
temporarily unavailable)
select(4, [3], [], NULL, NULL) = 1 (in [3])
read(3, "\23\307\231\235\304e|\242", 48) = 8
read(3, 0x7fff16b46330, 40) = -1 EAGAIN (Resource
temporarily unavailable)
select(4, [3], [], NULL, NULL) = 1 (in [3])
read(3, "\2\274\363a\264\371\335\374\207", 40) = 9
read(3, 0x7fff16b46330, 31) = -1 EAGAIN (Resource
temporarily unavailable)
select(4, [3], [], NULL, NULL) = 1 (in [3])
read(3, "|\356\25\210)\351\265vb\206", 31) = 10
read(3, 0x7fff16b46330, 21) = -1 EAGAIN (Resource
temporarily unavailable)
select(4, [3], [], NULL, NULL) = 1 (in [3])
read(3, "\214\36\326BJ\227#\330", 21) = 8
read(3, 0x7fff16b46330, 13) = -1 EAGAIN (Resource
temporarily unavailable)
select(4, [3], [], NULL, NULL^C