On Thu, Dec 21, 2023, at 12:34 PM, Alan Coopersmith wrote:
> For 119, the code in the Solaris find command that prints the
> "find: cannot read dir sub/unwritable" message was modified last year
> to make it not print that message if -prune was in effect for the directory,
> so it's possible a bug in find was introduced by those changes.

Yes, I believe this is a recently introduced bug in Solaris find.
This sequence of shell commands should reproduce:

mkdir sub
mkdir sub/unwritable
touch sub/unwritable/file
chmod a-wx sub/unwritable
find sub -type d ! -perm -700 -exec chmod u+rwx {} \;

As -depth is not in use here, find should execute the chmod _before_
attempting to descend into "sub/unwritable", and that should make the
directory accessible again.  I tested the above sequence of commands on
all the following operating systems, and did not encounter any errors:

aarch64c-freebsd14.0
powerpc-aix7.1.5.0
powerpc-aix7.3.1.0
sparc-solaris2.10
sparc-solaris2.11
x86_64-linux
x86_64-freebsd13.2
x86_64-netbsd9.3
x86_64-openbsd7.4

As previously mentioned, the Solaris 11 machine I have access to is
version 11.3 (unknown patch level; if you know how to get anything
more specific than that, please let me know).

> For 261, Solaris gained a /dev/full device in Solaris 11.4.51.
> Since the only purpose of this device is to return ENOSPC, I would
> hope that it's fully compatible with the implementations on other OS'es,
> but I don't know of any testing done to confirm that.

This may be a bug in your /bin/sh or {/usr,}/bin/printf.  The command
that failed in this test is

./config.status --header=-:input </dev/null >/dev/full

which is *expected* to print an error message (on stderr) and exit
unsuccessfully, but on your test machine it printed nothing and exited
successfully.

When I execute this command on my Linux workstation, using the files
'config.status' and 'input' from your tarball, I get

./config.status: line 978: printf: write error: No space left on device
config.status: error: could not create -

and an unsuccessful exit status.  I would guess that on your machine
the printf built-in and/or standalone printf executable are not
reporting write errors.

Since I don't have access to a Solaris 11.4 machine myself, and since
both of these appear to be plain bugs in the shell and utilities, I'm
currently not planning to make any changes because of these failures.
Please let me know if you disagree; in which case, please suggest what
we should do, because I don't see any good workaround in Autoconf's code
for either issue.

Thanks again for testing.
zw

Reply via email to