GNU bug report logs - #18896
regressions in coreutils 8.23 on Yosemite

Previous Next

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.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 18896 in the body.
You can then email your comments to 18896 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Wed, 29 Oct 2014 23:14:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jack Howarth <howarth <at> bromo.med.uc.edu>:
New bug report received and forwarded. Copy sent to bug-coreutils <at> gnu.org. (Wed, 29 Oct 2014 23:14:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Jack Howarth <howarth <at> bromo.med.uc.edu>
To: bug-coreutils <at> gnu.org
Subject: regressions in coreutils 8.23 on Yosemite
Date: Wed, 29 Oct 2014 19:13:34 -0400
[Message part 1 (text/plain, inline)]
   I am finding that the single failure seen on Mavericks for the 
coreutils 8.23 testsuite...

FAIL: test-getcwd.sh

=====================================================
   GNU coreutils 8.23: gnulib-tests/test-suite.log
=====================================================

# TOTAL: 306
# PASS:  293
# SKIP:  12
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

when run as sudo, is replaced by two new errors and two new failures
under Yosemite as sudo.

link-deref.sh: set-up failure: 
ERROR: tests/cp/link-deref.sh
FAIL: tests/cp/link-no-deref.sh
fiemap-perf.sh: skipped test: this file system lacks FIEMAP support
fiemap-2.sh: skipped test: this file system lacks FIEMAP support

FAIL: tests/cp/link-symlink.sh

ERROR: tests/ln/hard-to-sym.sh

============================================================================
Testsuite summary for GNU coreutils 8.23
============================================================================
# TOTAL: 563
# PASS:  397
# SKIP:  162
# XFAIL: 0
# FAIL:  2
# XPASS: 0
# ERROR: 2

Are these failures already known and are there any workarounds? I have attached
the bzip2 compressed test-suite.log in case it helps.
     Thanks in advance
            Jack

[test-suite.log.bz2 (application/x-bzip2, attachment)]

Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Thu, 30 Oct 2014 00:02:01 GMT) Full text and rfc822 format available.

Message #8 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Jack Howarth <howarth <at> bromo.med.uc.edu>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Thu, 30 Oct 2014 00:01:17 +0000
On 10/29/2014 11:13 PM, Jack Howarth wrote:
>    I am finding that the single failure seen on Mavericks for the 
> coreutils 8.23 testsuite...
> 
> FAIL: test-getcwd.sh
> 
> =====================================================
>    GNU coreutils 8.23: gnulib-tests/test-suite.log
> =====================================================

The above gnulib issue may occur on Yosemite too but was not run
due to the new failures below

> when run as sudo, is replaced by two new errors and two new failures
> under Yosemite as sudo.
> 
> ERROR: tests/cp/link-deref.sh
> FAIL: tests/cp/link-no-deref.sh
> 
> FAIL: tests/cp/link-symlink.sh
> 
> ERROR: tests/ln/hard-to-sym.sh
> 
> ============================================================================
> Testsuite summary for GNU coreutils 8.23
> ============================================================================
> # TOTAL: 563
> # PASS:  397
> # SKIP:  162
> # XFAIL: 0
> # FAIL:  2
> # XPASS: 0
> # ERROR: 2

All these failures and errors are due to trying to create
a hardlink to a symlink and getting an "Operation not supported" error.

Can you send the output of this command?
  $ grep -E "(LINK_F|LINKAT)" lib/config.h

What file system type are you running this one?

I suspect that this might help?

diff --git a/lib/linkat.c b/lib/linkat.c
index 6ee30fb..fd6bd1c 100644
--- a/lib/linkat.c
+++ b/lib/linkat.c
@@ -329,7 +329,8 @@ rpl_linkat (int fd1, char const *file1, int fd2, char const *file2, int flag)
     if (0 <= have_follow_really)
     {
       int result = linkat (fd1, file1, fd2, file2, flag);
-      if (!(result == -1 && errno == EINVAL))
+      if (!(result == -1 && (errno == EINVAL || errno == ENOTSUP
+                             || errno == EOPNOTSUPP)))
         {
           have_follow_really = 1;
           return result;





Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Thu, 30 Oct 2014 18:25:01 GMT) Full text and rfc822 format available.

Message #11 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Jack Howarth <howarth <at> bromo.med.uc.edu>
To: Pádraig Brady <P <at> draigBrady.com>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Thu, 30 Oct 2014 14:24:08 -0400
On Thu, Oct 30, 2014 at 12:01:17AM +0000, Pádraig Brady wrote:
> On 10/29/2014 11:13 PM, Jack Howarth wrote:
> >    I am finding that the single failure seen on Mavericks for the 
> > coreutils 8.23 testsuite...
> > 
> > FAIL: test-getcwd.sh
> > 
> > =====================================================
> >    GNU coreutils 8.23: gnulib-tests/test-suite.log
> > =====================================================
> 
> The above gnulib issue may occur on Yosemite too but was not run
> due to the new failures below
> 
> > when run as sudo, is replaced by two new errors and two new failures
> > under Yosemite as sudo.
> > 
> > ERROR: tests/cp/link-deref.sh
> > FAIL: tests/cp/link-no-deref.sh
> > 
> > FAIL: tests/cp/link-symlink.sh
> > 
> > ERROR: tests/ln/hard-to-sym.sh
> > 
> > ============================================================================
> > Testsuite summary for GNU coreutils 8.23
> > ============================================================================
> > # TOTAL: 563
> > # PASS:  397
> > # SKIP:  162
> > # XFAIL: 0
> > # FAIL:  2
> > # XPASS: 0
> > # ERROR: 2
> 
> All these failures and errors are due to trying to create
> a hardlink to a symlink and getting an "Operation not supported" error.
> 
> Can you send the output of this command?
>   $ grep -E "(LINK_F|LINKAT)" lib/config.h

On x86_64-apple-darwin13 which doesn't show these failures, I see...

#define GNULIB_AREADLINKAT 1
#define GNULIB_TEST_LINKAT 1
#define GNULIB_TEST_READLINKAT 1
#define GNULIB_TEST_SYMLINKAT 1
#define GNULIB_TEST_UNLINKAT 1
/* #undef HAVE_LINKAT */
/* #undef HAVE_READLINKAT */
/* #undef HAVE_SYMLINKAT */
/* #undef HAVE_UNLINKAT */
/* #undef LINKAT_TRAILING_SLASH_BUG */
#define LINK_FOLLOWS_SYMLINKS 1

whereas on x86_64-apple-darwin14, I get...

#define GNULIB_AREADLINKAT 1
#define GNULIB_TEST_LINKAT 1
#define GNULIB_TEST_READLINKAT 1
#define GNULIB_TEST_SYMLINKAT 1
#define GNULIB_TEST_UNLINKAT 1
#define HAVE_LINKAT 1
#define HAVE_READLINKAT 1
#define HAVE_SYMLINKAT 1
#define HAVE_UNLINKAT 1
/* #undef LINKAT_TRAILING_SLASH_BUG */
#define LINK_FOLLOWS_SYMLINKS 1

> 
> What file system type are you running this one?

Both filesystems are

   File System Personality:  Journaled HFS+
   Type (Bundle):            hfs
   Name (User Visible):      Mac OS Extended (Journaled)
   Journal:                  Journal size 81920 KB at offset 0x1d1c000
   Owners:                   Enabled

> 
> I suspect that this might help?
> 
> diff --git a/lib/linkat.c b/lib/linkat.c
> index 6ee30fb..fd6bd1c 100644
> --- a/lib/linkat.c
> +++ b/lib/linkat.c
> @@ -329,7 +329,8 @@ rpl_linkat (int fd1, char const *file1, int fd2, char const *file2, int flag)
>      if (0 <= have_follow_really)
>      {
>        int result = linkat (fd1, file1, fd2, file2, flag);
> -      if (!(result == -1 && errno == EINVAL))
> +      if (!(result == -1 && (errno == EINVAL || errno == ENOTSUP
> +                             || errno == EOPNOTSUPP)))
>          {
>            have_follow_really = 1;
>            return result;

Unfortunately, with this patch, I still see the failures on x86_64-apple-darwin14.

link-deref.sh: set-up failure: 
ERROR: tests/cp/link-deref.sh
FAIL: tests/cp/link-no-deref.sh
FAIL: tests/cp/link-symlink.sh
hard-to-sym.sh: set-up failure: 
ERROR: tests/ln/hard-to-sym.sh

Do we need to handle darwin14 differently now that it sets...

#define HAVE_LINKAT 1
#define HAVE_READLINKAT 1
#define HAVE_SYMLINKAT 1
#define HAVE_UNLINKAT 1

which was never tested on darwin before?
          Jack




Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Thu, 30 Oct 2014 21:25:02 GMT) Full text and rfc822 format available.

Message #14 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Jack Howarth <howarth <at> bromo.med.uc.edu>
To: Pádraig Brady <P <at> draigBrady.com>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Thu, 30 Oct 2014 17:24:35 -0400
On Thu, Oct 30, 2014 at 12:01:17AM +0000, Pádraig Brady wrote:
> On 10/29/2014 11:13 PM, Jack Howarth wrote:
> >    I am finding that the single failure seen on Mavericks for the 
> > coreutils 8.23 testsuite...
> > 
> > FAIL: test-getcwd.sh
> > 
> > =====================================================
> >    GNU coreutils 8.23: gnulib-tests/test-suite.log
> > =====================================================
> 
> The above gnulib issue may occur on Yosemite too but was not run
> due to the new failures below
> 
> > when run as sudo, is replaced by two new errors and two new failures
> > under Yosemite as sudo.
> > 
> > ERROR: tests/cp/link-deref.sh
> > FAIL: tests/cp/link-no-deref.sh
> > 
> > FAIL: tests/cp/link-symlink.sh
> > 
> > ERROR: tests/ln/hard-to-sym.sh
> > 
> > ============================================================================
> > Testsuite summary for GNU coreutils 8.23
> > ============================================================================
> > # TOTAL: 563
> > # PASS:  397
> > # SKIP:  162
> > # XFAIL: 0
> > # FAIL:  2
> > # XPASS: 0
> > # ERROR: 2
> 
> All these failures and errors are due to trying to create
> a hardlink to a symlink and getting an "Operation not supported" error.
> 
> Can you send the output of this command?
>   $ grep -E "(LINK_F|LINKAT)" lib/config.h
> 

In case it helps, here is the diff being the lib/config.h files generated on
darwin13 and darwin14...

--- coreutils-config.h.darwin13	2014-10-30 17:20:17.000000000 -0400
+++ coreutils-config.h.darwin14	2014-10-30 17:19:54.000000000 -0400
@@ -748,7 +748,7 @@
 /* #undef GWINSZ_IN_SYS_PTY */
 
 /* Define to 1 if you have the `access' function. */
-#define HAVE_ACCESS 1
+/* #undef HAVE_ACCESS */
 
 /* Define to 1 if you have the `aclsort' function. */
 /* #undef HAVE_ACLSORT */
@@ -952,7 +952,7 @@
 
 /* Define to 1 if you have the declaration of `fdopendir', and to 0 if you
    don't. */
-#define HAVE_DECL_FDOPENDIR 0
+#define HAVE_DECL_FDOPENDIR 1
 
 /* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
    don't. */
@@ -1297,7 +1297,7 @@
 /* #undef HAVE_EUIDACCESS */
 
 /* Define to 1 if you have the `faccessat' function. */
-/* #undef HAVE_FACCESSAT */
+#define HAVE_FACCESSAT 1
 
 /* Define to 1 if you have the `facl' function. */
 /* #undef HAVE_FACL */
@@ -1309,7 +1309,7 @@
 #define HAVE_FCHMOD 1
 
 /* Define to 1 if you have the `fchmodat' function. */
-/* #undef HAVE_FCHMODAT */
+#define HAVE_FCHMODAT 1
 
 /* Define to 1 if you have the `fchown' function. */
 #define HAVE_FCHOWN 1
@@ -1321,7 +1321,7 @@
 #define HAVE_FDATASYNC 1
 
 /* Define to 1 if you have the `fdopendir' function. */
-/* #undef HAVE_FDOPENDIR */
+#define HAVE_FDOPENDIR 1
 
 /* Define to 1 if you have the <features.h> header file. */
 /* #undef HAVE_FEATURES_H */
@@ -1349,7 +1349,7 @@
 #define HAVE_FSEEKO 1
 
 /* Define to 1 if you have the `fstatat' function. */
-/* #undef HAVE_FSTATAT */
+#define HAVE_FSTATAT 1
 
 /* Define to 1 if you have the `fstatfs' function. */
 #define HAVE_FSTATFS 1
@@ -1592,7 +1592,7 @@
 #define HAVE_LINK 1
 
 /* Define to 1 if you have the `linkat' function. */
-/* #undef HAVE_LINKAT */
+#define HAVE_LINKAT 1
 
 /* Define to 1 if you have the `listmntent' function. */
 /* #undef HAVE_LISTMNTENT */
@@ -1731,7 +1731,7 @@
 /* #undef HAVE_OBSTACK */
 
 /* Define to 1 if you have the `openat' function. */
-/* #undef HAVE_OPENAT */
+#define HAVE_OPENAT 1
 
 /* Define to 1 if you have the `opendir' function. */
 #define HAVE_OPENDIR 1
@@ -1813,7 +1813,7 @@
 #define HAVE_READLINK 1
 
 /* Define to 1 if you have the `readlinkat' function. */
-/* #undef HAVE_READLINKAT */
+#define HAVE_READLINKAT 1
 
 /* Define to 1 if your system has a GNU libc compatible 'realloc' function,
    and to 0 otherwise. */
@@ -2171,7 +2171,7 @@
 #define HAVE_SYMLINK 1
 
 /* Define to 1 if you have the `symlinkat' function. */
-/* #undef HAVE_SYMLINKAT */
+#define HAVE_SYMLINKAT 1
 
 /* Define to 1 if you have the `sync' function. */
 #define HAVE_SYNC 1
@@ -2338,7 +2338,7 @@
 #define HAVE_UNISTD_H 1
 
 /* Define to 1 if you have the `unlinkat' function. */
-/* #undef HAVE_UNLINKAT */
+#define HAVE_UNLINKAT 1
 
 /* Define to 1 if you have the `unsetenv' function. */
 #define HAVE_UNSETENV 1
@@ -2429,7 +2429,7 @@
 
 /* Define to 1 if fstatat (..., 0) works. For example, it does not work in AIX
    7.1. */
-/* #undef HAVE_WORKING_FSTATAT_ZERO_FLAG */
+#define HAVE_WORKING_FSTATAT_ZERO_FLAG 1
 
 /* Define to 1 if O_NOATIME works. */
 #define HAVE_WORKING_O_NOATIME 0


> What file system type are you running this one?
> 
> I suspect that this might help?
> 
> diff --git a/lib/linkat.c b/lib/linkat.c
> index 6ee30fb..fd6bd1c 100644
> --- a/lib/linkat.c
> +++ b/lib/linkat.c
> @@ -329,7 +329,8 @@ rpl_linkat (int fd1, char const *file1, int fd2, char const *file2, int flag)
>      if (0 <= have_follow_really)
>      {
>        int result = linkat (fd1, file1, fd2, file2, flag);
> -      if (!(result == -1 && errno == EINVAL))
> +      if (!(result == -1 && (errno == EINVAL || errno == ENOTSUP
> +                             || errno == EOPNOTSUPP)))
>          {
>            have_follow_really = 1;
>            return result;




Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Fri, 31 Oct 2014 02:30:04 GMT) Full text and rfc822 format available.

Message #17 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Jack Howarth <howarth <at> bromo.med.uc.edu>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Fri, 31 Oct 2014 02:29:05 +0000
[Message part 1 (text/plain, inline)]
On 10/30/2014 06:24 PM, Jack Howarth wrote:
> On Thu, Oct 30, 2014 at 12:01:17AM +0000, Pádraig Brady wrote:
>> On 10/29/2014 11:13 PM, Jack Howarth wrote:
>>>    I am finding that the single failure seen on Mavericks for the 
>>> coreutils 8.23 testsuite...
>>>
>>> FAIL: test-getcwd.sh
>>>
>>> =====================================================
>>>    GNU coreutils 8.23: gnulib-tests/test-suite.log
>>> =====================================================
>>
>> The above gnulib issue may occur on Yosemite too but was not run
>> due to the new failures below
>>
>>> when run as sudo, is replaced by two new errors and two new failures
>>> under Yosemite as sudo.
>>>
>>> ERROR: tests/cp/link-deref.sh
>>> FAIL: tests/cp/link-no-deref.sh
>>>
>>> FAIL: tests/cp/link-symlink.sh
>>>
>>> ERROR: tests/ln/hard-to-sym.sh
>>>
>>> ============================================================================
>>> Testsuite summary for GNU coreutils 8.23
>>> ============================================================================
>>> # TOTAL: 563
>>> # PASS:  397
>>> # SKIP:  162
>>> # XFAIL: 0
>>> # FAIL:  2
>>> # XPASS: 0
>>> # ERROR: 2
>>
>> All these failures and errors are due to trying to create
>> a hardlink to a symlink and getting an "Operation not supported" error.
>>
>> Can you send the output of this command?
>>   $ grep -E "(LINK_F|LINKAT)" lib/config.h
> 
> On x86_64-apple-darwin13 which doesn't show these failures, I see...
> 
> #define GNULIB_AREADLINKAT 1
> #define GNULIB_TEST_LINKAT 1
> #define GNULIB_TEST_READLINKAT 1
> #define GNULIB_TEST_SYMLINKAT 1
> #define GNULIB_TEST_UNLINKAT 1
> /* #undef HAVE_LINKAT */
> /* #undef HAVE_READLINKAT */
> /* #undef HAVE_SYMLINKAT */
> /* #undef HAVE_UNLINKAT */
> /* #undef LINKAT_TRAILING_SLASH_BUG */
> #define LINK_FOLLOWS_SYMLINKS 1
> 
> whereas on x86_64-apple-darwin14, I get...
> 
> #define GNULIB_AREADLINKAT 1
> #define GNULIB_TEST_LINKAT 1
> #define GNULIB_TEST_READLINKAT 1
> #define GNULIB_TEST_SYMLINKAT 1
> #define GNULIB_TEST_UNLINKAT 1
> #define HAVE_LINKAT 1
> #define HAVE_READLINKAT 1
> #define HAVE_SYMLINKAT 1
> #define HAVE_UNLINKAT 1
> /* #undef LINKAT_TRAILING_SLASH_BUG */
> #define LINK_FOLLOWS_SYMLINKS 1
> 
>>
>> What file system type are you running this one?
> 
> Both filesystems are
> 
>    File System Personality:  Journaled HFS+
>    Type (Bundle):            hfs
>    Name (User Visible):      Mac OS Extended (Journaled)
>    Journal:                  Journal size 81920 KB at offset 0x1d1c000
>    Owners:                   Enabled
> 
>>
>> I suspect that this might help?
>>
>> diff --git a/lib/linkat.c b/lib/linkat.c
>> index 6ee30fb..fd6bd1c 100644
>> --- a/lib/linkat.c
>> +++ b/lib/linkat.c
>> @@ -329,7 +329,8 @@ rpl_linkat (int fd1, char const *file1, int fd2, char const *file2, int flag)
>>      if (0 <= have_follow_really)
>>      {
>>        int result = linkat (fd1, file1, fd2, file2, flag);
>> -      if (!(result == -1 && errno == EINVAL))
>> +      if (!(result == -1 && (errno == EINVAL || errno == ENOTSUP
>> +                             || errno == EOPNOTSUPP)))
>>          {
>>            have_follow_really = 1;
>>            return result;
> 
> Unfortunately, with this patch, I still see the failures on x86_64-apple-darwin14.

Ah right, that code path is only for older Linux kernels
with AT_SYMLINK_FOLLOW specified, which is not the case here.
Please drop this patch.

> link-deref.sh: set-up failure: 
> ERROR: tests/cp/link-deref.sh
> FAIL: tests/cp/link-no-deref.sh
> FAIL: tests/cp/link-symlink.sh
> hard-to-sym.sh: set-up failure: 
> ERROR: tests/ln/hard-to-sym.sh

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.

Attached is an ancillary patch to coreutils to convert the
Last ERROR above to the more correct FAILs, which you don't need to apply.

thanks,
Pádraig.
[tests-linkat-error.patch (text/x-patch, attachment)]

Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Fri, 31 Oct 2014 03:32:01 GMT) Full text and rfc822 format available.

Message #20 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Jack Howarth <howarth <at> bromo.med.uc.edu>
To: Pádraig Brady <P <at> draigBrady.com>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Thu, 30 Oct 2014 23:30:55 -0400
On Fri, Oct 31, 2014 at 02:29:05AM +0000, Pádraig Brady wrote:
> On 10/30/2014 06:24 PM, Jack Howarth wrote:
> > On Thu, Oct 30, 2014 at 12:01:17AM +0000, Pádraig Brady wrote:
> >> On 10/29/2014 11:13 PM, Jack Howarth wrote:
> >>>    I am finding that the single failure seen on Mavericks for the 
> >>> coreutils 8.23 testsuite...
> >>>
> >>> FAIL: test-getcwd.sh
> >>>
> >>> =====================================================
> >>>    GNU coreutils 8.23: gnulib-tests/test-suite.log
> >>> =====================================================
> >>
> >> The above gnulib issue may occur on Yosemite too but was not run
> >> due to the new failures below
> >>
> >>> when run as sudo, is replaced by two new errors and two new failures
> >>> under Yosemite as sudo.
> >>>
> >>> ERROR: tests/cp/link-deref.sh
> >>> FAIL: tests/cp/link-no-deref.sh
> >>>
> >>> FAIL: tests/cp/link-symlink.sh
> >>>
> >>> ERROR: tests/ln/hard-to-sym.sh
> >>>
> >>> ============================================================================
> >>> Testsuite summary for GNU coreutils 8.23
> >>> ============================================================================
> >>> # TOTAL: 563
> >>> # PASS:  397
> >>> # SKIP:  162
> >>> # XFAIL: 0
> >>> # FAIL:  2
> >>> # XPASS: 0
> >>> # ERROR: 2
> >>
> >> All these failures and errors are due to trying to create
> >> a hardlink to a symlink and getting an "Operation not supported" error.
> >>
> >> Can you send the output of this command?
> >>   $ grep -E "(LINK_F|LINKAT)" lib/config.h
> > 
> > On x86_64-apple-darwin13 which doesn't show these failures, I see...
> > 
> > #define GNULIB_AREADLINKAT 1
> > #define GNULIB_TEST_LINKAT 1
> > #define GNULIB_TEST_READLINKAT 1
> > #define GNULIB_TEST_SYMLINKAT 1
> > #define GNULIB_TEST_UNLINKAT 1
> > /* #undef HAVE_LINKAT */
> > /* #undef HAVE_READLINKAT */
> > /* #undef HAVE_SYMLINKAT */
> > /* #undef HAVE_UNLINKAT */
> > /* #undef LINKAT_TRAILING_SLASH_BUG */
> > #define LINK_FOLLOWS_SYMLINKS 1
> > 
> > whereas on x86_64-apple-darwin14, I get...
> > 
> > #define GNULIB_AREADLINKAT 1
> > #define GNULIB_TEST_LINKAT 1
> > #define GNULIB_TEST_READLINKAT 1
> > #define GNULIB_TEST_SYMLINKAT 1
> > #define GNULIB_TEST_UNLINKAT 1
> > #define HAVE_LINKAT 1
> > #define HAVE_READLINKAT 1
> > #define HAVE_SYMLINKAT 1
> > #define HAVE_UNLINKAT 1
> > /* #undef LINKAT_TRAILING_SLASH_BUG */
> > #define LINK_FOLLOWS_SYMLINKS 1
> > 
> >>
> >> What file system type are you running this one?
> > 
> > Both filesystems are
> > 
> >    File System Personality:  Journaled HFS+
> >    Type (Bundle):            hfs
> >    Name (User Visible):      Mac OS Extended (Journaled)
> >    Journal:                  Journal size 81920 KB at offset 0x1d1c000
> >    Owners:                   Enabled
> > 
> >>
> >> I suspect that this might help?
> >>
> >> diff --git a/lib/linkat.c b/lib/linkat.c
> >> index 6ee30fb..fd6bd1c 100644
> >> --- a/lib/linkat.c
> >> +++ b/lib/linkat.c
> >> @@ -329,7 +329,8 @@ rpl_linkat (int fd1, char const *file1, int fd2, char const *file2, int flag)
> >>      if (0 <= have_follow_really)
> >>      {
> >>        int result = linkat (fd1, file1, fd2, file2, flag);
> >> -      if (!(result == -1 && errno == EINVAL))
> >> +      if (!(result == -1 && (errno == EINVAL || errno == ENOTSUP
> >> +                             || errno == EOPNOTSUPP)))
> >>          {
> >>            have_follow_really = 1;
> >>            return result;
> > 
> > Unfortunately, with this patch, I still see the failures on x86_64-apple-darwin14.
> 
> Ah right, that code path is only for older Linux kernels
> with AT_SYMLINK_FOLLOW specified, which is not the case here.
> Please drop this patch.
> 
> > link-deref.sh: set-up failure: 
> > ERROR: tests/cp/link-deref.sh
> > FAIL: tests/cp/link-no-deref.sh
> > FAIL: tests/cp/link-symlink.sh
> > hard-to-sym.sh: set-up failure: 
> > ERROR: tests/ln/hard-to-sym.sh
> 
> 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.

../build-aux/test-driver: line 107: 83817 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-futimens

../build-aux/test-driver: line 107: 84551 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-readlinkat

../build-aux/test-driver: line 107: 83516 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-fdutimensat

../build-aux/test-driver: line 107: 84928 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-symlinkat

../build-aux/test-driver: line 107: 85151 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-unlinkat

../build-aux/test-driver: line 107: 85185 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-utimens

=====================================================
   GNU coreutils 8.23: gnulib-tests/test-suite.log
=====================================================

# TOTAL: 306
# PASS:  288
# SKIP:  12
# XFAIL: 0
# FAIL:  6
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

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

SKIP: test-getlogin
===================

Skipping test: stdin is not a tty.

SKIP: test-mbrtowc-w32-1.sh
===========================

Skipping test: not a native Windows system

SKIP: test-mbrtowc-w32-2.sh
===========================

Skipping test: not a native Windows system

SKIP: test-mbrtowc-w32-3.sh
===========================

Skipping test: not a native Windows system

SKIP: test-mbrtowc-w32-4.sh
===========================

Skipping test: not a native Windows system

SKIP: test-mbrtowc-w32-5.sh
===========================

Skipping test: not a native Windows system

SKIP: test-mbscasecmp.sh
========================

Skipping test: no turkish Unicode locale is installed

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

FAIL: test-utimens
==================

./test-futimens.h:112: assertion 'st1.st_atime == st2.st_atime' failed

SKIP: test-wcrtomb-w32-1.sh
===========================

Skipping test: not a native Windows system

SKIP: test-wcrtomb-w32-2.sh
===========================

Skipping test: not a native Windows system

SKIP: test-wcrtomb-w32-3.sh
===========================

Skipping test: not a native Windows system

SKIP: test-wcrtomb-w32-4.sh
===========================

Skipping test: not a native Windows system

SKIP: test-wcrtomb-w32-5.sh
===========================

Skipping test: not a native Windows system

============================================================================
Testsuite summary for GNU coreutils 8.23
============================================================================
# TOTAL: 306
# PASS:  288
# SKIP:  12
# XFAIL: 0
# FAIL:  6
# XPASS: 0
# ERROR: 0
============================================================================

> 
> Attached is an ancillary patch to coreutils to convert the
> Last ERROR above to the more correct FAILs, which you don't need to apply.
> 
> thanks,
> Pádraig.

> >From 0ba224ec5cd102773086137b7097ec91d1538e49 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P <at> draigBrady.com>
> Date: Fri, 31 Oct 2014 02:25:02 +0000
> Subject: [PATCH] tests: ln/hard-to-sym FAIL rather than ERROR when ln fails
> 
> * tests/ln/hard-to-sym.sh: Only call framework_failure_ when ln
> returns success.
> ---
>  tests/ln/hard-to-sym.sh |   36 +++++++++++++++++++++---------------
>  1 files changed, 21 insertions(+), 15 deletions(-)
> 
> diff --git a/tests/ln/hard-to-sym.sh b/tests/ln/hard-to-sym.sh
> index 995d3cf..f3ac8ba 100755
> --- a/tests/ln/hard-to-sym.sh
> +++ b/tests/ln/hard-to-sym.sh
> @@ -29,24 +29,30 @@ ln -s -L -P symlink2 symlink3 || fail=1
>  
>  # ===================================================
>  # ensure that -L follows symlinks, and overrides -P
> -ln -P -L symlink3 hard-to-a || fail=1
> -ls=$(ls -lG hard-to-a)x
> -case "$ls" in
> -  *'hard-to-ax') ;;
> -  *'hard-to-a -> '*x) fail=1 ;;
> -  *) framework_failure_ ;;
> -esac
> +if ln -P -L symlink3 hard-to-a; then
> +  ls=$(ls -lG hard-to-a)x
> +  case "$ls" in
> +    *'hard-to-ax') ;;
> +    *'hard-to-a -> '*x) fail=1 ;;
> +    *) framework_failure_ ;;
> +  esac
> +else
> +  fail=1
> +fi
>  
>  # ===================================================
>  # ensure that -P links (or at least duplicates) symlinks, and overrides -L
> -ln -L -P symlink3 hard-to-3 || fail=1
> -ls=$(ls -lG hard-to-3)x
> -case "$ls" in
> -  *'hard-to-3 -> symlink2x') ;;
> -  *'hard-to-3x') fail=1 ;;
> -  *'hard-to-3 -> '*x) fail=1 ;;
> -  *) framework_failure_ ;;
> -esac
> +if ln -L -P symlink3 hard-to-3; then
> +  ls=$(ls -lG hard-to-3)x
> +  case "$ls" in
> +    *'hard-to-3 -> symlink2x') ;;
> +    *'hard-to-3x') fail=1 ;;
> +    *'hard-to-3 -> '*x) fail=1 ;;
> +    *) framework_failure_ ;;
> +  esac
> +else
> +  fail=1
> +fi
>  
>  # ===================================================
>  # Create a hard link to a dangling symlink.
> -- 
> 1.7.7.6
> 





Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Fri, 31 Oct 2014 03:57:02 GMT) Full text and rfc822 format available.

Message #23 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Jack Howarth <howarth <at> bromo.med.uc.edu>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Fri, 31 Oct 2014 03:56:06 +0000
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.

> 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.




Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Fri, 31 Oct 2014 15:42:02 GMT) Full text and rfc822 format available.

Message #26 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Jack Howarth <howarth <at> bromo.med.uc.edu>
To: Pádraig Brady <P <at> draigBrady.com>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: 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.




Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Fri, 31 Oct 2014 16:05:01 GMT) Full text and rfc822 format available.

Message #29 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Jack Howarth <howarth <at> bromo.med.uc.edu>
Cc: Eric Blake <eblake <at> redhat.com>, 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Fri, 31 Oct 2014 16:03:43 +0000
On 10/31/2014 03:41 PM, Jack Howarth wrote:
> 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) 

Weird, timing issue?

> % 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)

Surprising.

> 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

This one is succeeding unexpectedly (I'm guessing that readlinkat() is returning 0 here?)
Eric might have more insight into whether we should relax this test.

> 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);
>       }
>   }

There is a mismatch between the line numbers reported by ASSERT() and lldb
which may be due to the way the header is being included.
Anyway it would be best to step through (over the functions) the test
noting the returns and errno at the failing step.

thanks again,
Pádraig.




Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Fri, 31 Oct 2014 16:14:01 GMT) Full text and rfc822 format available.

Message #32 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Jack Howarth <howarth <at> bromo.med.uc.edu>
To: Pádraig Brady <P <at> draigBrady.com>
Cc: Eric Blake <eblake <at> redhat.com>, 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Fri, 31 Oct 2014 12:13:09 -0400
On Fri, Oct 31, 2014 at 04:03:43PM +0000, Pádraig Brady wrote:
> On 10/31/2014 03:41 PM, Jack Howarth wrote:
> > 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) 
> 
> Weird, timing issue?

Normally that sort of thing occurs when the crash is due to a bad memory access which a
debugger suppresses. At least in my experience on darwin.

> 
> > % 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)
> 
> Surprising.
> 
> > 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
> 
> This one is succeeding unexpectedly (I'm guessing that readlinkat() is returning 0 here?)
> Eric might have more insight into whether we should relax this test.
> 
> > 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);
> >       }
> >   }
> 
> There is a mismatch between the line numbers reported by ASSERT() and lldb
> which may be due to the way the header is being included.
> Anyway it would be best to step through (over the functions) the test
> noting the returns and errno at the failing step.
> 
> thanks again,
> Pádraig.




Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Mon, 03 Nov 2014 14:18:02 GMT) Full text and rfc822 format available.

Message #35 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Jack Howarth <howarth <at> bromo.med.uc.edu>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Mon, 03 Nov 2014 15:16:58 +0100
On 10/31/2014 05:03 PM, Pádraig Brady wrote:
> On 10/31/2014 03:41 PM, Jack Howarth wrote:
>> 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.

I pushed the following slightly different more general patch
to gnulib to address this issue:
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=c8e57ce5

thanks,
Pádraig.





Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Mon, 03 Nov 2014 19:41:02 GMT) Full text and rfc822 format available.

Message #38 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Jack Howarth <howarth <at> bromo.med.uc.edu>
To: Pádraig Brady <P <at> draigBrady.com>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Mon, 3 Nov 2014 14:40:42 -0500
On Mon, Nov 03, 2014 at 03:16:58PM +0100, Pádraig Brady wrote:
> On 10/31/2014 05:03 PM, Pádraig Brady wrote:
> > On 10/31/2014 03:41 PM, Jack Howarth wrote:
> >> 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.
> 
> I pushed the following slightly different more general patch
> to gnulib to address this issue:
> http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=c8e57ce5
> 
> thanks,
> Pádraig.

Pádraig,
     Using a current checkout of gnulib git at commit c564172a11b94fed43632cbc854277d68d14e693
and the instructions at https://sourceware.org/glibc/wiki/Testing/Gnulib, I tested these
changes on x86_64-apple-darwin14. I had to pass -std=c89 to CFLAGS on configure to avoid...

mv -f $depbase.Tpo $depbase.Po
depbase=`echo symlinkat.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..  -DGNULIB_STRICT_CHECKING=1 -Wall  -g -O2 -MT symlinkat.o -MD -MP -MF $depbase.Tpo -c -o symlinkat.o symlinkat.c &&\
mv -f $depbase.Tpo $depbase.Po
symlinkat.c:31:16: warning: implicitly declaring library function 'strlen' with type 'unsigned long (const char *)'
  size_t len = strlen (name);
               ^
symlinkat.c:31:16: note: please include the header <string.h> or explicitly provide a declaration for 'strlen'
symlinkat.c:34:19: error: variable has incomplete type 'struct stat'
      struct stat st;
                  ^
symlinkat.c:34:14: note: forward declaration of 'struct stat'
      struct stat st;
             ^
symlinkat.c:35:11: warning: implicit declaration of function 'fstatat' is invalid in C99 [-Wimplicit-function-declaration]
      if (fstatat (fd, name, &st, 0) == 0)
          ^
2 warnings and 1 error generated.

to eliminate the C99 warning and '#include <string.h>' in symlinkat.c to eliminate the implicit declaration warning.
However this still leaves the compile failure of...

make[4]: Entering directory `/private/tmp/testdir/gllib'
depbase=`echo symlinkat.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..  -DGNULIB_STRICT_CHECKING=1 -Wall -std=c89  -g -O2 -MT symlinkat.o -MD -MP -MF $depbase.Tpo -c -o symlinkat.o symlinkat.c &&\
mv -f $depbase.Tpo $depbase.Po
symlinkat.c:35:19: error: variable has incomplete type 'struct stat'
      struct stat st;
                  ^
symlinkat.c:35:14: note: forward declaration of 'struct stat'
      struct stat st;
             ^
symlinkat.c:36:11: warning: implicit declaration of function 'fstatat' [-Wimplicit-function-declaration]
      if (fstatat (fd, name, &st, 0) == 0)
          ^
1 warning and 1 error generated.

This required adding '#include <sys/stat.h> in symlinkat.c to eliminate the compilation failure.

diff --git a/lib/symlinkat.c b/lib/symlinkat.c
index 9797f46..5df605f 100644
--- a/lib/symlinkat.c
+++ b/lib/symlinkat.c
@@ -20,6 +20,8 @@
 
 #include <unistd.h>
 #include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
 
 #if HAVE_SYMLINKAT
 # undef symlinkat

At this point, I am stuck on the a later compiler error...

gcc -DHAVE_CONFIG_H -I. -I..  -DGNULIB_STRICT_CHECKING=1 -DIN_GNULIB_TESTS=1 -I. -I. -I.. -I./.. -I../gllib -I./../gllib -Wall -std=c89  -g -O2 -MT test-stdnoreturn.o -MD -MP -MF $depbase.Tpo -c -o test-stdnoreturn.o test-stdnoreturn.c &&\
mv -f $depbase.Tpo $depbase.Po
In file included from test-stdnoreturn.c:23:
In file included from ../gllib/stdlib.h:36:
/usr/include/stdlib.h:128:19: error: use of undeclared identifier '__noreturn__'
void     abort(void) __dead2;
                     ^
/usr/include/sys/cdefs.h:135:33: note: expanded from macro '__dead2'
#define __dead2         __attribute__((noreturn))
                                       ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include/stdnoreturn.h:27:18: note: 
      expanded from macro 'noreturn'
#define noreturn _Noreturn
                 ^
../config.h:4252:37: note: expanded from macro '_Noreturn'
#  define _Noreturn __attribute__ ((__noreturn__))
                                    ^
In file included from test-stdnoreturn.c:23:
In file included from ../gllib/stdlib.h:36:
/usr/include/stdlib.h:142:17: error: use of undeclared identifier '__noreturn__'
void     exit(int) __dead2;
                   ^
/usr/include/sys/cdefs.h:135:33: note: expanded from macro '__dead2'
#define __dead2         __attribute__((noreturn))
                                       ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include/stdnoreturn.h:27:18: note: 
      expanded from macro 'noreturn'
#define noreturn _Noreturn
                 ^
../config.h:4252:37: note: expanded from macro '_Noreturn'
#  define _Noreturn __attribute__ ((__noreturn__))
                                    ^
In file included from test-stdnoreturn.c:23:
In file included from ../gllib/stdlib.h:36:
/usr/include/stdlib.h:182:17: error: use of undeclared identifier '__noreturn__'
void    _Exit(int) __dead2;
                   ^
/usr/include/sys/cdefs.h:135:33: note: expanded from macro '__dead2'
#define __dead2         __attribute__((noreturn))
                                       ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include/stdnoreturn.h:27:18: note: 
      expanded from macro 'noreturn'
#define noreturn _Noreturn
                 ^
../config.h:4252:37: note: expanded from macro '_Noreturn'
#  define _Noreturn __attribute__ ((__noreturn__))
                                    ^
In file included from test-stdnoreturn.c:23:
In file included from ../gllib/stdlib.h:96:
In file included from ../gllib/unistd.h:40:
/usr/include/unistd.h:424:18: error: use of undeclared identifier '__noreturn__'
void     _exit(int) __dead2;
                    ^
/usr/include/sys/cdefs.h:135:33: note: expanded from macro '__dead2'
#define __dead2         __attribute__((noreturn))
                                       ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include/stdnoreturn.h:27:18: note: 
      expanded from macro 'noreturn'
#define noreturn _Noreturn
                 ^
../config.h:4252:37: note: expanded from macro '_Noreturn'
#  define _Noreturn __attribute__ ((__noreturn__))
                                    ^
In file included from test-stdnoreturn.c:23:
In file included from ../gllib/stdlib.h:96:
In file included from ../gllib/unistd.h:40:
In file included from /usr/include/unistd.h:633:
In file included from ../gllib/sys/select.h:108:
In file included from ../gllib/signal.h:65:
In file included from ../gllib/pthread.h:30:
/usr/include/pthread.h:323:27: error: use of undeclared identifier '__noreturn__'
void pthread_exit(void *) __dead2;
                          ^
/usr/include/sys/cdefs.h:135:33: note: expanded from macro '__dead2'
#define __dead2         __attribute__((noreturn))
                                       ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include/stdnoreturn.h:27:18: note: 
      expanded from macro 'noreturn'
#define noreturn _Noreturn
                 ^
../config.h:4252:37: note: expanded from macro '_Noreturn'
#  define _Noreturn __attribute__ ((__noreturn__))
                                    ^
In file included from test-stdnoreturn.c:23:
In file included from ../gllib/stdlib.h:96:
In file included from ../gllib/unistd.h:40:
/usr/include/unistd.h:640:18: error: use of undeclared identifier '__noreturn__'
void     _Exit(int) __dead2;
                    ^
/usr/include/sys/cdefs.h:135:33: note: expanded from macro '__dead2'
#define __dead2         __attribute__((noreturn))
                                       ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include/stdnoreturn.h:27:18: note: 
      expanded from macro 'noreturn'
#define noreturn _Noreturn
                 ^
../config.h:4252:37: note: expanded from macro '_Noreturn'
#  define _Noreturn __attribute__ ((__noreturn__))
                                    ^
6 errors generated.

Any ideas on how to eliminate that?
           Jack





Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Mon, 03 Nov 2014 20:10:02 GMT) Full text and rfc822 format available.

Message #41 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Jack Howarth <howarth <at> bromo.med.uc.edu>
To: Pádraig Brady <P <at> draigBrady.com>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Mon, 3 Nov 2014 15:09:45 -0500
On Mon, Nov 03, 2014 at 03:16:58PM +0100, Pádraig Brady wrote:
> On 10/31/2014 05:03 PM, Pádraig Brady wrote:
> > On 10/31/2014 03:41 PM, Jack Howarth wrote:
> >> 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.
> 
> I pushed the following slightly different more general patch
> to gnulib to address this issue:
> http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=c8e57ce5
> 
> thanks,
> Pádraig.

Pádraig,
     Using...

diff --git a/lib/symlinkat.c b/lib/symlinkat.c
index 9797f46..5df605f 100644
--- a/lib/symlinkat.c
+++ b/lib/symlinkat.c
@@ -20,6 +20,8 @@
 
 #include <unistd.h>
 #include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
 
 #if HAVE_SYMLINKAT
 # undef symlinkat
diff --git a/tests/test-stdnoreturn.c b/tests/test-stdnoreturn.c
index a8aead8..04107bc 100644
--- a/tests/test-stdnoreturn.c
+++ b/tests/test-stdnoreturn.c
@@ -18,6 +18,8 @@
 
 #include <config.h>
 
+#include <unistd.h>
+
 #include <stdnoreturn.h>
 
 #include <stdlib.h>

...gets the compilation of gnulib to...

make[4]: Entering directory `/private/tmp/testdir/gltests'
depbase=`echo test-strtoll.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..  -DGNULIB_STRICT_CHECKING=1 -DIN_GNULIB_TESTS=1 -I. -I. -I.. -I./.. -I../gllib -I./../gllib -Wall -std=c89  -g -O2 -MT test-strtoll.o -MD -MP -MF $depbase.Tpo -c -o test-strtoll.o test-strtoll.c &&\
mv -f $depbase.Tpo $depbase.Po
test-strtoll.c:23:18: error: use of undeclared identifier 'strtoll'
SIGNATURE_CHECK (strtoll, long long, (const char *, char **, int));
                 ^
./signature.h:39:21: note: expanded from macro 'SIGNATURE_CHECK'
  SIGNATURE_CHECK1 (fn, ret, args, __LINE__)
                    ^
./signature.h:44:21: note: expanded from macro 'SIGNATURE_CHECK1'
  SIGNATURE_CHECK2 (fn, ret, args, id) /* macroexpand line */
                    ^
./signature.h:46:58: note: expanded from macro 'SIGNATURE_CHECK2'
  static ret (* _GL_UNUSED signature_check ## id) args = fn
                                                         ^
test-strtoll.c:39:14: warning: implicit declaration of function 'strtoll' [-Wimplicit-function-declaration]
    result = strtoll (input, &ptr, 10);
             ^
1 warning and 1 error generated.

The /usr/include/stdlib.h header on darwin14 has...

#if !__DARWIN_NO_LONG_LONG
long long
         strtoll(const char *, char **, int);
#endif /* !__DARWIN_NO_LONG_LONG */

         Jack




Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Mon, 03 Nov 2014 22:00:02 GMT) Full text and rfc822 format available.

Message #44 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Jack Howarth <howarth <at> bromo.med.uc.edu>
To: Pádraig Brady <P <at> draigBrady.com>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Mon, 3 Nov 2014 16:58:59 -0500
On Mon, Nov 03, 2014 at 03:16:58PM +0100, Pádraig Brady wrote:
> On 10/31/2014 05:03 PM, Pádraig Brady wrote:
> > On 10/31/2014 03:41 PM, Jack Howarth wrote:
> >> 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.
> 
> I pushed the following slightly different more general patch
> to gnulib to address this issue:
> http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=c8e57ce5
> 
> thanks,
> Pádraig.

Pádraig,
     I puzzled out the problem with the strtoll test compilation. I have 
been using...

./configure CPPFLAGS="-Wall -std=c89"

but it appears it needs to be...

./configure CPPFLAGS="-Wall -std=c99"

on darwin14. The current gnulib git at your commit and the changes...

diff --git a/lib/symlinkat.c b/lib/symlinkat.c
index 9797f46..5df605f 100644
--- a/lib/symlinkat.c
+++ b/lib/symlinkat.c
@@ -20,6 +20,8 @@
 
 #include <unistd.h>
 #include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
 
 #if HAVE_SYMLINKAT
 # undef symlinkat
diff --git a/tests/test-stdnoreturn.c b/tests/test-stdnoreturn.c
index a8aead8..04107bc 100644
--- a/tests/test-stdnoreturn.c
+++ b/tests/test-stdnoreturn.c
@@ -18,6 +18,8 @@
 
 #include <config.h>
 
+#include <unistd.h>
+
 #include <stdnoreturn.h>
 
 #include <stdlib.h>

passes 'make' but the 'make check' produces 9 failures...

../build-aux/test-driver: line 107:  3918 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-getlogin_r
../build-aux/test-driver: line 107:  3925 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-getopt
../build-aux/test-driver: line 107:  4246 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-linkat
../build-aux/test-driver: line 107:  5143 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-readlinkat
../build-aux/test-driver: line 107:  5498 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-snprintf-posix
../build-aux/test-driver: line 107:  5522 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-sprintf-posix
../build-aux/test-driver: line 107:  6031 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-unlinkat
../build-aux/test-driver: line 107:  6225 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-vsnprintf-posix
../build-aux/test-driver: line 107:  6238 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test-vsprintf-posix

which debug as...

$ sudo lldb ./test-linkat
Password:
(lldb) target create "./test-linkat"
Current executable set to './test-linkat' (x86_64).
(lldb) r
Process 6515 launched: './test-linkat' (x86_64)
./test-link.h:166: assertion 'func (BASE "b", BASE "link/") == -1' failed
Process 6515 stopped
* thread #1: tid = 0xe205e7, 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 = 0xe205e7, 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: 0x0000000100004426 test-linkat`test_link(func=<unavailable>, print=<unavailable>) + 4534 at test-link.h:32
    frame #4: 0x00000001000009fd test-linkat`main + 365 at test-linkat.c:124
    frame #5: 0x00007fff999935c9 libdyld.dylib`start + 1
(lldb) 

static int
test_link (int (*func) (char const *, char const *), bool print)
{
  int fd;
  int ret;

  /* Create first file.  */
  fd = open (BASE "a", O_CREAT | O_EXCL | O_WRONLY, 0600);
  ASSERT (0 <= fd);                                                <=== crash
  ASSERT (write (fd, "hello", 5) == 5);
  ASSERT (close (fd) == 0);

and

$ sudo lldb ./test-readlinkat
(lldb) target create "./test-readlinkat"
Current executable set to './test-readlinkat' (x86_64).
(lldb) r
Process 6538 launched: './test-readlinkat' (x86_64)
./test-readlink.h:71: assertion 'func (BASE "link2/", buf, sizeof buf) == -1' failed
Process 6538 stopped
* thread #1: tid = 0xe209a8, 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 = 0xe209a8, 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: 0x0000000100001b9b test-readlinkat`test_readlink(print=<unavailable>, func=<unavailable>) + 3083 at test-readlink.h:34
    frame #4: 0x00000001000008de test-readlinkat`main + 174 at test-readlinkat.c:76
    frame #5: 0x00007fff999935c9 libdyld.dylib`start + 1
(lldb) 

which is at...

static int
test_readlink (ssize_t (*func) (char const *, char *, size_t), bool print)
{
  char buf[80];

  /* Sanity checks of failures.  Mingw lacks symlink, but readlink can
     still distinguish between various errors.  */
  memset (buf, 0xff, sizeof buf);
  errno = 0;
  ASSERT (func ("no_such", buf, sizeof buf) == -1);  <<<<<< crash
  ASSERT (errno == ENOENT);


Oddly some tests still pass in the debugger...

$ sudo lldb ./test-unlinkat
(lldb) target create "./test-unlinkat"
Current executable set to './test-unlinkat' (x86_64).
(lldb) r
Process 6533 launched: './test-unlinkat' (x86_64)
Process 6533 exited with status = 0 (0x00000000) 
(lldb) 

which in my experience often happens when there is an invalid memory access being suppressed in eh.
             Jack






Information forwarded to bug-coreutils <at> gnu.org:
bug#18896; Package coreutils. (Tue, 04 Nov 2014 00:30:03 GMT) Full text and rfc822 format available.

Message #47 received at 18896 <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Jack Howarth <howarth <at> bromo.med.uc.edu>
Cc: 18896 <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Tue, 04 Nov 2014 01:29:39 +0100
On 11/03/2014 10:58 PM, Jack Howarth wrote:
> On Mon, Nov 03, 2014 at 03:16:58PM +0100, Pádraig Brady wrote:
>> On 10/31/2014 05:03 PM, Pádraig Brady wrote:
>>> On 10/31/2014 03:41 PM, Jack Howarth wrote:
>>>> 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.
>>
>> I pushed the following slightly different more general patch
>> to gnulib to address this issue:
>> http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=c8e57ce5
>>
>> thanks,
>> Pádraig.
> 
> Pádraig,
>      I puzzled out the problem with the strtoll test compilation. I have 
> been using...
> 
> ./configure CPPFLAGS="-Wall -std=c89"
> 
> but it appears it needs to be...
> 
> ./configure CPPFLAGS="-Wall -std=c99"
> 
> on darwin14. The current gnulib git at your commit and the changes...
> 
> diff --git a/lib/symlinkat.c b/lib/symlinkat.c
> index 9797f46..5df605f 100644
> --- a/lib/symlinkat.c
> +++ b/lib/symlinkat.c
> @@ -20,6 +20,8 @@
>  
>  #include <unistd.h>
>  #include <errno.h>
> +#include <string.h>
> +#include <sys/stat.h>
>  
>  #if HAVE_SYMLINKAT
>  # undef symlinkat
> diff --git a/tests/test-stdnoreturn.c b/tests/test-stdnoreturn.c
> index a8aead8..04107bc 100644
> --- a/tests/test-stdnoreturn.c
> +++ b/tests/test-stdnoreturn.c
> @@ -18,6 +18,8 @@
>  
>  #include <config.h>
>  
> +#include <unistd.h>
> +

Thanks for tracking these missing includes down.
We should add those to gnulib.

> passes 'make' but the 'make check' produces 9 failures...

> ../build-aux/test-driver: line 107:  3918 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-getlogin_r
> ../build-aux/test-driver: line 107:  3925 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-getopt
> ../build-aux/test-driver: line 107:  4246 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-linkat
> ../build-aux/test-driver: line 107:  5143 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-readlinkat
> ../build-aux/test-driver: line 107:  5498 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-snprintf-posix
> ../build-aux/test-driver: line 107:  5522 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-sprintf-posix
> ../build-aux/test-driver: line 107:  6031 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-unlinkat
> ../build-aux/test-driver: line 107:  6225 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-vsnprintf-posix
> ../build-aux/test-driver: line 107:  6238 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-vsprintf-posix
> 
> which debug as...
> 
> $ sudo lldb ./test-linkat
> Password:
> (lldb) target create "./test-linkat"
> Current executable set to './test-linkat' (x86_64).
> (lldb) r
> Process 6515 launched: './test-linkat' (x86_64)
> ./test-link.h:166: assertion 'func (BASE "b", BASE "link/") == -1' failed

Note as mentioned before I'm going by the assertion message
as the debugger line seems to be incorrect.
Anyway it seems we'll need to augment the LINKAT_TRAILING_SLASH_BUG
test in m4/linkat.m4 as per above.

> $ sudo lldb ./test-readlinkat
> (lldb) target create "./test-readlinkat"
> Current executable set to './test-readlinkat' (x86_64).
> (lldb) r
> Process 6538 launched: './test-readlinkat' (x86_64)
> ./test-readlink.h:71: assertion 'func (BASE "link2/", buf, sizeof buf) == -1' failed

Seems like we'll have to add much the same trailing "/" test
to m4/readlinkat.m4 like we've already done for m4/readlink.m4

I'm travelling at present so patches will be tardy.

thanks for the testing so far,
Pádraig.




Reply sent to Pádraig Brady <P <at> draigBrady.com>:
You have taken responsibility. (Sun, 31 May 2015 03:02:03 GMT) Full text and rfc822 format available.

Notification sent to Jack Howarth <howarth <at> bromo.med.uc.edu>:
bug acknowledged by developer. (Sun, 31 May 2015 03:02:04 GMT) Full text and rfc822 format available.

Message #52 received at 18896-done <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Jack Howarth <howarth <at> bromo.med.uc.edu>
Cc: 18896-done <at> debbugs.gnu.org
Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Sun, 31 May 2015 04:01:16 +0100
unarchive 18896
stop

On 03/11/14 21:58, Jack Howarth wrote:
> passes 'make' but the 'make check' produces 9 failures...
> 
> ../build-aux/test-driver: line 107:  3918 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-getlogin_r
> ../build-aux/test-driver: line 107:  3925 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-getopt
> ../build-aux/test-driver: line 107:  4246 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-linkat
> ../build-aux/test-driver: line 107:  5143 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-readlinkat
> ../build-aux/test-driver: line 107:  5498 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-snprintf-posix
> ../build-aux/test-driver: line 107:  5522 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-sprintf-posix
> ../build-aux/test-driver: line 107:  6031 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-unlinkat
> ../build-aux/test-driver: line 107:  6225 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-vsnprintf-posix
> ../build-aux/test-driver: line 107:  6238 Abort trap: 6           "$@" > $log_file 2>&1
> FAIL: test-vsprintf-posix

FYI coreutils + gnulib tests are now passing on Yosemite.
Fixes include:

http://git.sv.gnu.org/gitweb/?p=coreutils.git;a=commitdiff;h=67db18c

http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=c9cfa07
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=c79f352
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=e176ee0
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=70e0e9e
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=b650986
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=4f3dc0b
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=c8e57ce

Pádraig.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 28 Jun 2015 11:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 10 years and 72 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.