On Fri, Feb 8, 2013 at 3:07 AM, Ian Lance Taylor <i...@google.com> wrote: > On Thu, Feb 7, 2013 at 2:43 PM, Uros Bizjak <ubiz...@gmail.com> wrote: >> >> I did hit one new error that seems related: >> >> --- FAIL: TestChtimes (0.00 seconds) >> os_test.go:681: AccessTime didn't go backwards; >> was={63495872497 0 47130825733376}, after={63495872497 0 >> 47130825733376} >> os_test.go:685: ModTime didn't go backwards; was={63495872497 >> 0 47130825733376}, after={63495872497 0 47130825733376} >> FAIL >> FAIL: os > > Something has gone wrong in the file > libgo/go/syscall/libcall_linux_utimesnano.go. The function in that > file will try utimensat. On your system that should return ENOSYS. > In that case the function should convert the times and call utimes. > The code looks OK to me but there may be something wrong with it. It > looks like the file times didn't change at all.
>From the strace -f, it looks that utimes is not called at all in between two relevant stats: 32019 open("/tmp/_Go_TestChtimes102217073", O_RDWR|O_CREAT|O_EXCL, 0600) = 5 32019 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 32019 fcntl(5, F_SETFD, FD_CLOEXEC) = 0 32019 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 32019 write(5, "hello, world\n", 13) = 13 32019 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 32019 close(5) = 0 32019 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 32019 stat("/tmp/_Go_TestChtimes102217073", {st_mode=S_IFREG|0600, st_size=13, ...}) = 0 32019 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 32019 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 32019 stat("/tmp/_Go_TestChtimes102217073", {st_mode=S_IFREG|0600, st_size=13, ...}) = 0 OTOH, on Fedora17 I get: 28385 open("/tmp/_Go_TestChtimes832324999", O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC, 0600) = 5 28385 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 28385 write(5, "hello, world\n", 13) = 13 28385 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 28385 close(5) = 0 28385 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 28385 stat("/tmp/_Go_TestChtimes832324999", {st_mode=S_IFREG|0600, st_size=13, ...}) = 0 28385 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 28385 utimensat(AT_FDCWD, "/tmp/_Go_TestChtimes832324999", {{1360328600, 109183175}, {1360328600, 110183221}}, 0) = 0 28385 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 28385 stat("/tmp/_Go_TestChtimes832324999", {st_mode=S_IFREG|0600, st_size=13, ...}) = 0 28385 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 28385 unlink("/tmp/_Go_TestChtimes832324999") = 0 Uros.