Hi David,

* David Snyder <[email protected]> [2009-10-29 16:56]:
> As such, I am unwilling to implement this function in the current
> rdate code.  While I have introduced compile-time opt-outs for
> Linux, this was based on the announced retirement of the 'sysctl'
> function [1] (as alerted to me by another Debian user).  The current
> rdate code does reference the adjtime(3) function [2], and I think
> I'll stick with it because, as I said, the OpenBSD coders know a
> h**l of a lot more than me about C coding.
> 
> Once again, thank you for your report.  If you should happen to run
> the below tests again, employing the '-a' option with rdate, and
> rdate _still_ breaks, I'd be glad to know what the results are.

Thanks for your reply, David.  I didn't realize that adjtimex() is
Linux-specific().  Anyway, I've tried the -a option of rdate now but
unfortunately it also fails:

sh-4.0# date
Thu Sep 24 02:16:02 GMT 1903
sh-4.0# rdate -o 123 -nvv -a 0.debian.pool.ntp.org
.
rdate: Could not adjust time of day: Invalid argument

strace shows:

gettimeofday({2203577094, 599408}, NULL) = 0
gettimeofday({2203577094, 600709}, NULL) = 0
write(2, "rdate: "..., 7rdate: )               = 7
write(2, "Could not adjust time of day"..., 28Could not adjust time of day) = 28
write(2, ": "..., 2: )                    = 2
write(2, "Invalid argument\n"..., 17Invalid argument
)   = 17

The full log from strace is attached.

Do you know if this problem can be addressed in a platform-neutral way?
-- 
Martin Michlmayr
http://www.cyrius.com/
execve("/usr/bin/rdate", ["rdate", "-o", "123", "-nvv", "-a", 
"0.debian.pool.ntp.org"], [/* 17 vars */]) = 0
brk(0)                                  = 0x14000
uname({sys="Linux", node="Unknown-00-14-fd-10-33-8e", ...}) = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x4001d000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=9918, ...}) = 0
mmap2(NULL, 9918, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001e000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libbsd.so.0", O_RDONLY)      = 3
read(3, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0<\21\0\0004\0\0\0\310"..., 512) 
= 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=28416, ...}) = 0
mmap2(NULL, 60104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x40026000
mprotect(0x4002d000, 28672, PROT_NONE)  = 0
mmap2(0x40034000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0x40034000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libpthread.so.0", O_RDONLY)  = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0hB\0\0004\0\0\0008"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=115893, ...}) = 0
mmap2(NULL, 123384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x40035000
mprotect(0x40049000, 28672, PROT_NONE)  = 0
mmap2(0x40050000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0x40050000
mmap2(0x40052000, 4600, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40052000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libutil.so.1", O_RDONLY)     = 3
read(3, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\360\t\0\0004\0\0\0\354"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9844, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x40021000
mmap2(NULL, 41128, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x40054000
mprotect(0x40056000, 28672, PROT_NONE)  = 0
mmap2(0x4005d000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0x4005d000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0DR\1\0004\0\0\0\230"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1209920, ...}) = 0
mmap2(NULL, 1245752, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x4005f000
mprotect(0x40182000, 32768, PROT_NONE)  = 0
mmap2(0x4018a000, 12288, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x123) = 0x4018a000
mmap2(0x4018d000, 8760, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4018d000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\254'\0\0004\0\0\0|"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=48900, ...}) = 0
mmap2(NULL, 80228, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x40190000
mprotect(0x4019c000, 28672, PROT_NONE)  = 0
mmap2(0x401a3000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb) = 0x401a3000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x40022000
set_tls(0x40022270, 0x40022270, 0x67c, 0x40022948, 0x40025048) = 0
open("/dev/urandom", O_RDONLY)          = 3
read(3, "$mFW"..., 4)                   = 4
close(3)                                = 0
mprotect(0x4018a000, 8192, PROT_READ)   = 0
mprotect(0x4005d000, 4096, PROT_READ)   = 0
mprotect(0x40050000, 4096, PROT_READ)   = 0
mprotect(0x40024000, 4096, PROT_READ)   = 0
munmap(0x4001e000, 9918)                = 0
set_tid_address(0x40021e18)             = 4977
SYS_338(0x40021e20, 0xc, 0xffffffec, 0x1, 0x40022270) = 0
futex(0xbecb8cc4, FUTEX_WAKE_PRIVATE, 1) = 0
rt_sigaction(SIGRTMIN, {0x4003916c, [], SA_SIGINFO|0x4000000}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x40038cdc, [], SA_RESTART|SA_SIGINFO|0x4000000}, 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
socket(PF_NETLINK, SOCK_RAW, 0)         = 3
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=4977, groups=00000000}, [12]) = 0
gettimeofday({2203577094, 237929}, NULL) = 0
sendto(3, "\24\0\0\0\26\0\1\3\6\353W\203\0\0\0\0\0\0\0\0"..., 20, 0, 
{sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, 
msg_iov(1)=[{"0\0\0\0\24\0\2\0\6\353W\203q\23\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1\10"...,
 4096}], msg_controllen=0, msg_flags=0}, 0) = 108
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, 
msg_iov(1)=[{"\24\0\0\0\3\0\2\0\6\353W\203q\23\0\0\0\0\0\0\1\0\0\0\10\0\1\0\177\0\0\1\10"...,
 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
close(3)                                = 0
socket(PF_FILE, 0x80801 /* SOCK_??? */, 0) = 3
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1 
ENOENT (No such file or directory)
close(3)                                = 0
socket(PF_FILE, 0x80801 /* SOCK_??? */, 0) = 3
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1 
ENOENT (No such file or directory)
close(3)                                = 0
brk(0)                                  = 0x14000
brk(0x35000)                            = 0x35000
open("/etc/nsswitch.conf", O_RDONLY)    = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=475, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x4001e000
read(3, "# /etc/nsswitch.conf\n#\n# Example "..., 4096) = 475
read(3, ""..., 4096)                    = 0
close(3)                                = 0
munmap(0x4001e000, 4096)                = 0
open("/etc/host.conf", O_RDONLY)        = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=9, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x4001e000
read(3, "multi on\n"..., 4096)          = 9
read(3, ""..., 4096)                    = 0
close(3)                                = 0
munmap(0x4001e000, 4096)                = 0
futex(0x4018e568, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/etc/resolv.conf", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=37, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x4001e000
read(3, "search home\nnameserver 192.168.1."..., 4096) = 37
read(3, ""..., 4096)                    = 0
close(3)                                = 0
munmap(0x4001e000, 4096)                = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=9918, ...}) = 0
mmap2(NULL, 9918, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001e000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libnss_files.so.2", O_RDONLY) = 3
read(3, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\214\30\0\0004\0\0\0("..., 512) 
= 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=42672, ...}) = 0
mmap2(NULL, 74432, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x401a4000
mprotect(0x401ad000, 32768, PROT_NONE)  = 0
mmap2(0x401b5000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9) = 0x401b5000
close(3)                                = 0
mprotect(0x401b5000, 4096, PROT_READ)   = 0
munmap(0x4001e000, 9918)                = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 3
fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
fstat64(3, {st_mode=S_IFREG|0644, st_size=254, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x4001e000
read(3, "127.0.0.1\tlocalhost\n192.168.1.100"..., 4096) = 254
read(3, ""..., 4096)                    = 0
close(3)                                = 0
munmap(0x4001e000, 4096)                = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=9918, ...}) = 0
mmap2(NULL, 9918, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001e000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libnss_dns.so.2", O_RDONLY)  = 3
read(3, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0`\v\0\0004\0\0\0\360"..., 512) = 
512
fstat64(3, {st_mode=S_IFREG|0644, st_size=18040, ...}) = 0
mmap2(NULL, 49320, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x401b7000
mprotect(0x401bb000, 28672, PROT_NONE)  = 0
mmap2(0x401c2000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0x401c2000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libresolv.so.2", O_RDONLY)   = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0P$\0\0004\0\0\0\264"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=71524, ...}) = 0
mmap2(NULL, 79764, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x401c4000
mmap2(0x401d4000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10) = 0x401d4000
mmap2(0x401d6000, 6036, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x401d6000
close(3)                                = 0
mprotect(0x401d4000, 4096, PROT_READ)   = 0
mprotect(0x401c2000, 4096, PROT_READ)   = 0
munmap(0x4001e000, 9918)                = 0
stat64("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=37, ...}) = 0
open("/etc/resolv.conf", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=37, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x4001e000
read(3, "search home\nnameserver 192.168.1."..., 4096) = 37
read(3, ""..., 4096)                    = 0
close(3)                                = 0
munmap(0x4001e000, 4096)                = 0
gettimeofday({2203577094, 365923}, NULL) = 0
gettimeofday({2203577094, 367153}, NULL) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(53), 
sin_addr=inet_addr("192.168.1.254")}, 28) = 0
fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
gettimeofday({2203577094, 373482}, NULL) = 0
poll([{fd=3, events=POLLOUT}], 1, 0)    = 1 ([{fd=3, revents=POLLOUT}])
send(3, "\324\246\1\0\0\1\0\0\0\0\0\0\0010\6debian\4pool\3ntp\3or"..., 39, 
MSG_NOSIGNAL) = 39
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 5000) = 1 ([{fd=3, revents=POLLOUT}])
send(3, "\5C\1\0\0\1\0\0\0\0\0\0\0010\6debian\4pool\3ntp\3or"..., 39, 
MSG_NOSIGNAL) = 39
gettimeofday({2203577094, 380810}, NULL) = 0
poll([{fd=3, events=POLLIN}], 1, 4992)  = 1 ([{fd=3, revents=POLLIN}])
ioctl(3, FIONREAD, [135])               = 0
recvfrom(3, "\324\246\201\200\0\1\0\6\0\0\0\0\0010\6debian\4pool\3ntp\3or"..., 
2048, 0, {sa_family=AF_INET, sin_port=htons(53), 
sin_addr=inet_addr("192.168.1.254")}, [16]) = 135
gettimeofday({2203577094, 445701}, NULL) = 0
poll([{fd=3, events=POLLIN}], 1, 4927)  = 1 ([{fd=3, revents=POLLIN}])
ioctl(3, FIONREAD, [119])               = 0
recvfrom(3, "\5C\201\200\0\1\0\1\0\1\0\0\0010\6debian\4pool\3ntp\3or"..., 1912, 
0, {sa_family=AF_INET, sin_port=htons(53), 
sin_addr=inet_addr("192.168.1.254")}, [16]) = 119
close(3)                                = 0
open("/etc/gai.conf", O_RDONLY)         = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2689, ...}) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=2689, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x4001e000
read(3, "# Configuration for getaddrinfo(3"..., 4096) = 2689
read(3, ""..., 4096)                    = 0
close(3)                                = 0
munmap(0x4001e000, 4096)                = 0
futex(0x4018d8cc, FUTEX_WAKE_PRIVATE, 2147483647) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(0), 
sin_addr=inet_addr("193.65.58.58")}, 16) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(56899), 
sin_addr=inet_addr("192.168.1.100")}, [16]) = 0
connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...}, 
16) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(0), 
sin_addr=inet_addr("83.231.183.4")}, 16) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(58880), 
sin_addr=inet_addr("192.168.1.100")}, [16]) = 0
connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...}, 
16) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(0), 
sin_addr=inet_addr("81.171.44.131")}, 16) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(60153), 
sin_addr=inet_addr("192.168.1.100")}, [16]) = 0
connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...}, 
16) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(0), 
sin_addr=inet_addr("83.226.240.252")}, 16) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(38572), 
sin_addr=inet_addr("192.168.1.100")}, [16]) = 0
connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...}, 
16) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(0), 
sin_addr=inet_addr("81.20.144.33")}, 16) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(37650), 
sin_addr=inet_addr("192.168.1.100")}, [16]) = 0
close(3)                                = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 3
gettimeofday({2203577094, 514668}, NULL) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(123), 
sin_addr=inet_addr("193.65.58.58")}, 16) = 0
write(2, ".\n"..., 2.
)                   = 2
gettimeofday({2203577094, 518502}, NULL) = 0
gettimeofday({2203577094, 519688}, NULL) = 0
open("/dev/urandom", O_RDONLY)          = 4
read(4, "\265 
r\351\2\240\5YA\353\343\301!\200\236\4\231\231\266(>\367{(2...@\1vs;\357\4\204"...,
 116) = 116
close(4)                                = 0
gettimeofday({2203577094, 525118}, NULL) = 0
write(3, 
"#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 48) = 48
select(4, [3], NULL, NULL, {0, 600000}) = 1 (in [3], left {0, 531793})
read(3, 
"$\2\0\354\0\0\r\32\0\0\n\346\301\276\346B\316\225$\256KhjL\2126\252\221|\30'\25\316"...,
 68) = 48
gettimeofday({2203577094, 599408}, NULL) = 0
gettimeofday({2203577094, 600709}, NULL) = 0
write(2, "rdate: "..., 7rdate: )               = 7
write(2, "Could not adjust time of day"..., 28Could not adjust time of day) = 28
write(2, ": "..., 2: )                    = 2
write(2, "Invalid argument\n"..., 17Invalid argument
)   = 17
exit_group(1)                           = ?

Reply via email to