Browse Source

* apt-pkg/acquire-worker.cc:

- show error details of failed methods
* apt-pkg/contrib/fileutl.cc:
  - if a process aborts with signal, show signal number
* methods/http.cc:
  - ignore SIGPIPE, we deal with EPIPE from write in 
    HttpMethod::ServerDie() (LP: #385144)
debian/1.8.y
Michael Vogt 13 years ago
parent
commit
ab7f4d7ca6
  1. 7
      apt-pkg/acquire-worker.cc
  2. 7
      apt-pkg/contrib/fileutl.cc
  3. 7
      debian/changelog
  4. 4
      methods/http.cc

7
apt-pkg/acquire-worker.cc

@ -527,10 +527,6 @@ bool pkgAcquire::Worker::OutFdReady()
if (Res <= 0)
return MethodFailure();
// Hmm.. this should never happen.
if (Res < 0)
return true;
OutQueue.erase(0,Res);
if (OutQueue.empty() == true)
@ -558,7 +554,8 @@ bool pkgAcquire::Worker::MethodFailure()
{
_error->Error("Method %s has died unexpectedly!",Access.c_str());
ExecWait(Process,Access.c_str(),true);
// do not reap the child here to show meaningfull error to the user
ExecWait(Process,Access.c_str(),false);
Process = -1;
close(InFd);
close(OutFd);

7
apt-pkg/contrib/fileutl.cc

@ -450,8 +450,11 @@ bool ExecWait(pid_t Pid,const char *Name,bool Reap)
{
if (Reap == true)
return false;
if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV)
return _error->Error(_("Sub-process %s received a segmentation fault."),Name);
if (WIFSIGNALED(Status) != 0)
if( WTERMSIG(Status) == SIGSEGV)
return _error->Error(_("Sub-process %s received a segmentation fault."),Name);
else
return _error->Error(_("Sub-process %s received signal %u."),Name, WTERMSIG(Status));
if (WIFEXITED(Status) != 0)
return _error->Error(_("Sub-process %s returned an error code (%u)"),Name,WEXITSTATUS(Status));

7
debian/changelog

@ -20,6 +20,13 @@ apt (0.7.21) UNRELEASED; urgency=low
* apt-pkg/algorithms.cc:
- consider recommends when making the scores for the problem
resolver
* apt-pkg/acquire-worker.cc:
- show error details of failed methods
* apt-pkg/contrib/fileutl.cc:
- if a process aborts with signal, show signal number
* methods/http.cc:
- ignore SIGPIPE, we deal with EPIPE from write in
HttpMethod::ServerDie() (LP: #385144)
-- Michael Vogt <michael.vogt@ubuntu.com> Thu, 28 May 2009 17:51:42 +0200

4
methods/http.cc

@ -1316,9 +1316,11 @@ int HttpMethod::Loop()
int main()
{
setlocale(LC_ALL, "");
// ignore SIGPIPE, this can happen on write() if the socket
// closes the connection (this is dealt with via ServerDie())
signal(SIGPIPE, SIG_IGN);
HttpMethod Mth;
return Mth.Loop();
}

Loading…
Cancel
Save