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