Detect that DRT crashed even if a crash dialog is running
authoraroben <aroben@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 20 Aug 2007 23:18:23 +0000 (23:18 +0000)
committeraroben <aroben@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 20 Aug 2007 23:18:23 +0000 (23:18 +0000)
        On Windows, when DRT crashes a crash dialog commonly appears. The DRT
        process is still running at this point, so run-webkit-tests wouldn't
        detect that DRT had crashed. We now record the crash in our SIGPIPE
        handler so that we know if DRT crashed even if the crash dialog is up.

        Reviewed by Sam.

        * Scripts/run-webkit-tests:
        (sub catch_pipe): Set the crashed bit.
        (sub openDumpTool): Reset the crashed bit.
        (sub dumpToolDidCrash): Check the crashed bit.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@25163 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Scripts/run-webkit-tests

index 37e2e5d1e92e5d4de714c11fa8226f2439db247b..dc904c76d218ce8e272b6a778f3bb0167e7fb9a6 100644 (file)
@@ -1,3 +1,19 @@
+2007-08-20  Adam Roben  <aroben@apple.com>
+
+        Detect that DRT crashed even if a crash dialog is running
+
+        On Windows, when DRT crashes a crash dialog commonly appears. The DRT
+        process is still running at this point, so run-webkit-tests wouldn't
+        detect that DRT had crashed. We now record the crash in our SIGPIPE
+        handler so that we know if DRT crashed even if the crash dialog is up.
+
+        Reviewed by Sam.
+
+        * Scripts/run-webkit-tests:
+        (sub catch_pipe): Set the crashed bit.
+        (sub openDumpTool): Reset the crashed bit.
+        (sub dumpToolDidCrash): Check the crashed bit.
+
 2007-08-20  Adam Roben  <aroben@apple.com>
 
         Fix Bug 15026: prepare-ChangeLog should list new tests in WebCore/ChangeLog
index 32ef30efe6b6ab523d56b88902f06d7b3e1c8aff..56be8a8d5f329b89f783287ee38b21f00b6e065f 100755 (executable)
@@ -65,7 +65,7 @@ use POSIX;
 
 sub openDumpTool();
 sub closeDumpTool();
-sub dumpToolCrashed();
+sub dumpToolDidCrash();
 sub closeHTTPD();
 sub countAndPrintLeaks($$$);
 sub fileNameWithNumber($$);
@@ -437,16 +437,14 @@ if ($pixelTests) {
 
 my $dumpToolPID;
 my $isDumpToolOpen = 0;
+my $dumpToolCrashed = 0;
 
 my $atLineStart = 1;
 my $lastDirectory = "";
 
 my $isHttpdOpen = 0;
 
-# On Windows, we will receive a SIGPIPE signal if DRT crashes, which would
-# normally cause run-webkit-tests to quit. Catching the signal with this empty
-# handler will prevent that.
-sub catch_pipe { }
+sub catch_pipe { $dumpToolCrashed = 1; }
 $SIG{"PIPE"} = "catch_pipe";
 
 print "Testing ", scalar @tests, " test cases.\n";
@@ -665,7 +663,7 @@ for my $test (@tests) {
       }
     }
 
-    if (dumpToolCrashed()) {
+    if (dumpToolDidCrash()) {
         $result = "crash";
 
         printFailureMessageForTest($test, "crashed");
@@ -1154,6 +1152,7 @@ sub openDumpTool()
     }
     $dumpToolPID = open3(\*OUT, \*IN, \*ERROR, $dumpTool, @args) or die "Failed to start tool: $dumpTool\n";
     $isDumpToolOpen = 1;
+    $dumpToolCrashed = 0;
 }
 
 sub closeDumpTool()
@@ -1167,8 +1166,9 @@ sub closeDumpTool()
     $isDumpToolOpen = 0;
 }
 
-sub dumpToolCrashed()
+sub dumpToolDidCrash()
 {
+    return 1 if $dumpToolCrashed;
     return 0 unless $isDumpToolOpen;
 
     my $pid = waitpid(-1, WNOHANG);