Package: coreutils;
Reported by: Jack Howarth <howarth <at> bromo.med.uc.edu>
Date: Wed, 29 Oct 2014 23:14:01 UTC
Severity: normal
Done: Pádraig Brady <P <at> draigBrady.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Jack Howarth <howarth <at> bromo.med.uc.edu> To: Pádraig Brady <P <at> draigBrady.com> Cc: 18896 <at> debbugs.gnu.org Subject: bug#18896: regressions in coreutils 8.23 on Yosemite Date: Fri, 31 Oct 2014 11:41:08 -0400
On Fri, Oct 31, 2014 at 03:56:06AM +0000, Pádraig Brady wrote: > On 10/31/2014 03:30 AM, Jack Howarth wrote: > > On Fri, Oct 31, 2014 at 02:29:05AM +0000, Pádraig Brady wrote: > >> > >> So linkat() is now available but doesn't support hardlinks to symlinks > >> contrary to the POSIX spec. So it would be best we consider linkat() > >> unavailable, which can be done manually like: > >> > >> ac_cv_func_linkat=no ./configure > >> > >> We'll have to augment the gnulib linkat check to actually check > >> that linkat() works, rather than just being available. > > > > Passing ac_cv_func_linkat=no to configure and using your attached patch > > results in a large number of failures on x86_64-apple-darwin14. > > Good that's better. coreutils tests have passed, and you're getting > to gnulib issues below. > > > > FAIL: test-readlinkat > > ===================== > > ./test-readlink.h:71: assertion 'func (BASE "link2/", buf, sizeof buf) == -1' failed > > > > FAIL: test-symlinkat > > ==================== > > ./test-symlink.h:83: assertion 'func (BASE "nowhere", BASE "link1/") == -1' failed > > > > FAIL: test-unlinkat > > =================== > > ./test-unlink.h:49: assertion 'func ("..") == -1' failed > > This is indicating these system functions are succeeding (or failing with a different return value) > while their non "at" equivalents are failing as expected. That's surprising. > It would be useful to determine (with printf/gdb) the return value and errno in the above tests. Interestingly some of these asserts seem to be suppressed when I run the failing testcases through lldb or gdb. % sudo lldb ./test-fdutimensat (lldb) target create "./test-fdutimensat" Current executable set to './test-fdutimensat' (x86_64). (lldb) r Process 26490 launched: './test-fdutimensat' (x86_64) Process 26490 exited with status = 0 (0x00000000) (lldb) % sudo lldb ./test-unlinkat (lldb) target create "./test-unlinkat" Current executable set to './test-unlinkat' (x86_64). (lldb) r Process 51535 launched: './test-unlinkat' (x86_64) Process 51535 exited with status = 0 (0x00000000) (lldb) whereas others aren't... % sudo lldb ./test-readlinkat (lldb) target create "./test-readlinkat" Current executable set to './test-readlinkat' (x86_64). (lldb) r Process 51522 launched: './test-readlinkat' (x86_64) ./test-readlink.h:71: assertion 'func (BASE "link2/", buf, sizeof buf) == -1' failed Process 51522 stopped * thread #1: tid = 0x74d0e9, 0x00007fff962cd282 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT frame #0: 0x00007fff962cd282 libsystem_kernel.dylib`__pthread_kill + 10 libsystem_kernel.dylib`__pthread_kill + 10: -> 0x7fff962cd282: jae 0x7fff962cd28c ; __pthread_kill + 20 0x7fff962cd284: movq %rax, %rdi 0x7fff962cd287: jmp 0x7fff962c8ca3 ; cerror_nocancel 0x7fff962cd28c: retq (lldb) bt * thread #1: tid = 0x74d0e9, 0x00007fff962cd282 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT * frame #0: 0x00007fff962cd282 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x00007fff8ffc44c3 libsystem_pthread.dylib`pthread_kill + 90 frame #2: 0x00007fff8bfe7b73 libsystem_c.dylib`abort + 129 frame #3: 0x0000000100001c2b test-readlinkat`test_readlink(print=<unavailable>, func=<unavailable>) + 3083 at test-readlink.h:34 frame #4: 0x000000010000096e test-readlinkat`main + 174 at test-readlinkat.c:76 frame #5: 0x00007fff999935c9 libdyld.dylib`start + 1 (lldb) h% sudo lldb ./test-symlinkat (lldb) target create "./test-symlinkat" Current executable set to './test-symlinkat' (x86_64). (lldb) r Process 51529 launched: './test-symlinkat' (x86_64) ./test-symlink.h:83: assertion 'func (BASE "nowhere", BASE "link1/") == -1' failed Process 51529 stopped * thread #1: tid = 0x74d1b5, 0x00007fff962cd282 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT frame #0: 0x00007fff962cd282 libsystem_kernel.dylib`__pthread_kill + 10 libsystem_kernel.dylib`__pthread_kill + 10: -> 0x7fff962cd282: jae 0x7fff962cd28c ; __pthread_kill + 20 0x7fff962cd284: movq %rax, %rdi 0x7fff962cd287: jmp 0x7fff962c8ca3 ; cerror_nocancel 0x7fff962cd28c: retq (lldb) bt * thread #1: tid = 0x74d1b5, 0x00007fff962cd282 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT * frame #0: 0x00007fff962cd282 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x00007fff8ffc44c3 libsystem_pthread.dylib`pthread_kill + 90 frame #2: 0x00007fff8bfe7b73 libsystem_c.dylib`abort + 129 frame #3: 0x0000000100001293 test-symlinkat`test_symlink(print=<unavailable>, func=<unavailable>) + 2211 at test-symlink.h:43 frame #4: 0x0000000100000849 test-symlinkat`main + 169 at test-symlinkat.c:79 frame #5: 0x00007fff999935c9 libdyld.dylib`start + 1 frame #6: 0x00007fff999935c9 libdyld.dylib`start + 1 (lldb) where the error is at... static int test_symlink (int (*func) (char const *, char const *), bool print) { if (func ("nowhere", BASE "link1")) { if (print) fputs ("skipping test: symlinks not supported on this file system\n", stderr); return 77; } /* Some systems allow the creation of 0-length symlinks as a synonym for "."; but most reject it. */ { int status; errno = 0; status = func ("", BASE "link2"); if (status == -1) ASSERT (errno == ENOENT || errno == EINVAL); <<<<<<<<<--------- crash on Yosemite else { ASSERT (status == 0); ASSERT (unlink (BASE "link2") == 0); } } > > > FAIL: test-fdutimensat > > ====================== > > ./test-utimens.h:113: assertion 'st3.st_atime == Y2K' failed > > > > FAIL: test-futimens > > =================== > > ./test-futimens.h:112: assertion 'st1.st_atime == st2.st_atime' failed > > > > FAIL: test-utimens > > ================== > > ./test-futimens.h:112: assertion 'st1.st_atime == st2.st_atime' failed > > I've not looked into these at all. > > This information is very useful. > > thanks! > Pádraig.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.