Subject: Re: bug#8846: coreutils-8.12 on HP-UX 11.31: 3 of 365 tests failed

From: Jim Meyering <[email-masked]>
Date: Mon, 13 Jun 2011 21:45:30 +0200

Bruno Haible wrote:
> Jim Meyering wrote:
>> --- a/tests/init.sh
>> +++ b/tests/init.sh
>> @@ -317,6 +317,11 @@ path_prepend_ ()
>>
>>  setup_ ()
>>  {
>> +  # If we're redirecting a file descriptor larger than 2, say via automake's
>> +  # TESTS_ENVIRONMENT, that redirected FD is closed-on-exec on some systems
>> +  # (at least Solaris 10 and HP-UX 11.x), so redirect it here again.
>> +  test $stderr_fileno_ = 2 || eval "exec $stderr_fileno_>&2"
>> +
>>    if test "$VERBOSE" = yes; then
>>      # Test whether set -x may cause the selected shell to corrupt an
>>      # application's stderr.  Many do, including zsh-4.3.10 and the /bin/sh
>
> With this change, I get the attached log on HP-UX 11.31.
>
> ==============================================
>    GNU coreutils 8.12: tests/test-suite.log
> ==============================================
>
> 3 of 365 tests failed.  (88 tests were not run).
...

Hi Bruno,

Thanks for persevering.
That confirms the init.sh change solves one problem.
However, HP's /bin/sh has the bug that set -x corrupts stderr,
and in that case, init.sh decides not to honor VERBOSE=yes
because that led inevitably to numerous false positives due to the bug.

The easiest way to work around that is to use some other shell.
If you have bash, you might want to run this (but see below):

sh=/usr/local/bin/bash
make CONFIG_SHELL=$sh CONFIG_SHELL=$sh VERBOSE=yes \
  check -C tests TESTS='misc/printf-surprise du/inaccessible-cwd'

> FAIL: dd/nocache (exit: 1)
...
Pádraig's patch should have resolved this.

> FAIL: du/inaccessible-cwd (exit: 1)

This failure may be expected on HP-UX, assuming it lacks the *at functions
and its getcwd doesn't have the feature that Linux and others do
of working even in an inaccessible directory.

That leaves this one:

> FAIL: misc/printf-surprise (exit: 1)
> ====================================

Which may be failing because the ulimit of 10MiB is too low:

    head -c 10 fifo > out &
    ( ulimit -v 10000; env $prog %20000000f 0 2>err-msg > fifo )
    exit=$?

Can you try it manually?
E.g., run these commands and report the output?

  mkfifo fifo
  head -c 10 fifo > out &
  ( ulimit -v 10000; env printf %20000000f 0 2>err-msg > fifo )
  exit=$?
  n_out=$(wc -c < out)
  echo "$n_out::$exit"
  cat err-msg