Hi,

I built package with attached patch.
Test is OK, and work fine. Thanks!

Best regards,
  Nobuhiro

> Further to this libarchive_test failure due to SIGPIPE.
>
> The SIGPIPE signal occurs during the call to write() of the following
> code in libarchive/archive_read_support_compression_program.c, line 331ff:
>
>                do {
>                         ret = write(state->child_stdin, p, avail);
>                 } while (ret == -1 && errno == EINTR);
>
>                 if (ret > 0) {
>                         /* Consume whatever we managed to write. */
>                         __archive_read_filter_consume(self->upstream, ret);
>                 } else if (ret == -1 && errno == EAGAIN) {
>                         /* Block until child has some I/O ready. */
>                         __archive_check_child(state->child_stdin,
>                             state->child_stdout);
>                 } else {
>                         /* Write failed. */
>                         close(state->child_stdin);
>                         state->child_stdin = -1;
>                         fcntl(state->child_stdout, F_SETFL, 0);
>                         /* If it was a bad error, we're done; otherwise
>                          * it was EPIPE or EOF, and we can still read
>                          * from the child. */
>                         if (ret == -1 && errno != EPIPE)
>                                 return (-1);
>                 }
>
> It is clear from the code that an EPIPE error return from the write() is
> considered a recoverable situation.
>
> But the man file for write(2) states that a broken pipe will generate
> the SIGPIPE signal whose default disposition is to terminate the
> program, thus EPIPE cannot be returned from a call to write() unless the
> default disposition of the SIGPIPE signal is changed.
>
> The libarchive_test does not change the default disposition of the
> SIGPIPE signal thus if the pipe breaks then the test suite will be
> terminated without the opportunity for the EPIPE error condition to be
> gracefully handled.
>
> I attach a patch that changes the default disposition of SIGPIPE to be
> ignored in libarchive_test.  The test suite then runs successfully to
> completion with all tests passing.

-- 
Nobuhiro Iwamatsu
   iwamatsu at {nigauri.org / debian.org}
   GPG ID: 40AD1FA6



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to