[Piglit] glx-multithread-shader-compile hung
Jose Fonseca
jfonseca at vmware.com
Thu Aug 1 09:14:02 PDT 2013
----- Original Message -----
> On Wednesday, July 31, 2013 08:16:25 Jose Fonseca wrote:
> > FYI, I twice now got deadlock on glx-multithread-shader-compile on my
> > continuous testing of Mesa:
> >
> > ...
> > [Sat Jul 20 01:18:20 2013] :: running ::
> > glx/glx-multithread-shader-compile <-- last piglit message Build timed out
> > (after 120 minutes). Marking the build as failed. <-- Jenkins message
> >
> > I'm going to disable the test on my custom test list. But I believe that
> > if
> > we're going to add multi-threaded tests to piglit, then we should have a
> > per-test timeout (ie, after a threshold time like 5min the framework should
> > kill the process and mark the test as failed). Otherwise these race
> > condition tests do more harm than good -- as they prevent all other tests
> > from running.
>
> A timeout looks perfect.
> May be the attached patch helps to keep this test in mind :-)
>
> Mathias
I think this would be better done in python framework, so it could be used for all tests transparently.
FWIW, here is a snippet of how I did a similar thing on a different test suite:
p = subprocess.Popen(...)
# See also
# - http://bugs.python.org/issue5673
# - http://stackoverflow.com/questions/337863/python-popen-and-select-waiting-for-a-process-to-terminate-or-a-timeout
# - http://stackoverflow.com/questions/1191374/subprocess-with-timeout
if self._timeout:
import signal
def _handle_timeout(signum, frame):
self._timedout = True
os.kill(p.pid, signal.SIGKILL)
old_handler = signal.signal(signal.SIGALRM, _handle_timeout)
signal.alarm(self._timeout)
try:
self.stdout, self.stderr = p.communicate()
finally:
signal.signal(signal.SIGALRM, old_handler)
signal.alarm(0)
if self._timedout:
raise TimeOutError
Jose
More information about the Piglit
mailing list