Summary: | run-webkit-tests should have a watchdog timer (and timeout long tests) | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Eric Seidel (no email) <eric> | ||||||||||||||
Component: | New Bugs | Assignee: | Adam Roben (:aroben) <aroben> | ||||||||||||||
Status: | RESOLVED FIXED | ||||||||||||||||
Severity: | Normal | CC: | mitz, sam, slewis | ||||||||||||||
Priority: | P2 | ||||||||||||||||
Version: | 528+ (Nightly build) | ||||||||||||||||
Hardware: | Mac | ||||||||||||||||
OS: | OS X 10.5 | ||||||||||||||||
Attachments: |
|
Description
Eric Seidel (no email)
2008-03-05 01:22:59 PST
Something similar to the following could work my $actual = ""; - while (<IN>) { - last if /#EOF/; - $actual .= $_; + eval { + local $SIG{ALRM} = sub { die "test timed out" } + alarm 60; # die if test takes more than a minute + eval { + while (<IN>) { + last if /#EOF/; + $actual .= $_; + } + } + alarm 0; # cancel alarm + } + alarm 0; # avoid race condition + my $alarm_error = $@; + die $alarm_error if $alarm_error && $alarm_error !~ /test timed out/; # reraise other errors + if ($alarm_error) { + printFailureMessageForTest($test, "Test timed out!"); + killDumpTool(); + next; } DumpRenderTree support added by Brady in <http://trac.webkit.org/projects/webkit/changeset/30849>. Indeed - DRT now has a Watchdog *thread* which is immune to deadlocks or "the timer thread going out to lunch" It's turned on for DRTMac right now, and should be easy to turn on for other platforms DRT's as well. I'm working on a fix for this. Created attachment 20647 [details]
Cleanup 1
Created attachment 20648 [details]
Cleanup 2
Created attachment 20649 [details]
Cleanup 3
Created attachment 20651 [details]
Cleanup 4
Created attachment 20652 [details]
Cleanup 5
Created attachment 20653 [details]
Fix v1
Comment on attachment 20653 [details]
Fix v1
Now we just need to lower the threshold in DRT until we have all tests passing in under 5 seconds. :)
Fixed in r32029 |