From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1PzAaj-00009A-Hz for garchives@archives.gentoo.org; Mon, 14 Mar 2011 16:25:57 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id EB71A1C04B; Mon, 14 Mar 2011 16:24:45 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id B76DA1C04C for ; Mon, 14 Mar 2011 16:24:45 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 7A7DD1B4139 for ; Mon, 14 Mar 2011 16:24:45 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id DD7928006D for ; Mon, 14 Mar 2011 16:24:44 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <157382fae7b4b4c74a6f7ce319c602c269cc7e96.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:2.1.9 commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/AbstractEbuildProcess.py pym/_emerge/AbstractPollTask.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 157382fae7b4b4c74a6f7ce319c602c269cc7e96 Date: Mon, 14 Mar 2011 16:24:44 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 3ec84ef45f20623d06252ead99ee357c commit: 157382fae7b4b4c74a6f7ce319c602c269cc7e96 Author: Zac Medico gentoo org> AuthorDate: Thu Mar 10 05:46:17 2011 +0000 Commit: Zac Medico gentoo org> CommitDate: Mon Mar 14 16:23:10 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D157382fa AbstractPollTask: log exceptional events Previously, when AbstractPollTask receives a POLLERR or POLLNVAL event, it would silently cancel the task. Now it will generate a message like this: !!! SpawnProcess received strange poll event: 8 The message is displayed via a new _log_poll_exception method, which is overridden by AbstractEbuildProcess to log the message via elog. This might help diagnose reported cases of SIGTERM signals killing ebuild processes for no apparent reason: http://code.google.com/p/chromium-os/issues/detail?id=3D12968 --- pym/_emerge/AbstractEbuildProcess.py | 5 +++++ pym/_emerge/AbstractPollTask.py | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletions(-) diff --git a/pym/_emerge/AbstractEbuildProcess.py b/pym/_emerge/AbstractE= buildProcess.py index 601aafe..d7f31be 100644 --- a/pym/_emerge/AbstractEbuildProcess.py +++ b/pym/_emerge/AbstractEbuildProcess.py @@ -228,6 +228,11 @@ class AbstractEbuildProcess(SpawnProcess): self.scheduler.output(msg, log_path=3Dself.settings.get("PORTAGE_LOG_FILE")) =20 + def _log_poll_exception(self, event): + self._elog("eerror", + ["%s received strange poll event: %s\n" % \ + (self.__class__.__name__, event,)]) + def _set_returncode(self, wait_retval): SpawnProcess._set_returncode(self, wait_retval) =20 diff --git a/pym/_emerge/AbstractPollTask.py b/pym/_emerge/AbstractPollTa= sk.py index 833ee3b..6cbf984 100644 --- a/pym/_emerge/AbstractPollTask.py +++ b/pym/_emerge/AbstractPollTask.py @@ -1,8 +1,10 @@ -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 =20 import array +import logging =20 +from portage.util import writemsg_level from _emerge.AsynchronousTask import AsynchronousTask from _emerge.PollConstants import PollConstants class AbstractPollTask(AsynchronousTask): @@ -39,9 +41,16 @@ class AbstractPollTask(AsynchronousTask): def _unregister(self): raise NotImplementedError(self) =20 + def _log_poll_exception(self, event): + writemsg_level( + "!!! %s received strange poll event: %s\n" % \ + (self.__class__.__name__, event,), + level=3Dlogging.ERROR, noiselevel=3D-1) + def _unregister_if_appropriate(self, event): if self._registered: if event & self._exceptional_events: + self._log_poll_exception(event) self._unregister() self.cancel() elif event & PollConstants.POLLHUP: