Title: [204514] trunk/Tools
Revision
204514
Author
[email protected]
Date
2016-08-16 11:03:38 -0700 (Tue, 16 Aug 2016)

Log Message

False crashes in fast/text/emoji-gender-* tests
https://bugs.webkit.org/show_bug.cgi?id=160779

Patch by Jonathan Bedard <[email protected]> on 2016-08-16
Reviewed by Alexey Proskuryakov.

Fix from <rdar://problem/27786762>, where timed out tests falsely report as crashed.

* Scripts/webkitpy/port/driver.py:
(Driver._check_for_driver_crash_or_unresponsiveness): Change call to ‘write’ to disable crash flag.
* Scripts/webkitpy/port/driver_unittest.py: Added 3 variable to test version of ‘write.’
* Scripts/webkitpy/port/server_process.py:
(ServerProcess.write): Allow caller to disable crash flag on exception.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (204513 => 204514)


--- trunk/Tools/ChangeLog	2016-08-16 17:26:16 UTC (rev 204513)
+++ trunk/Tools/ChangeLog	2016-08-16 18:03:38 UTC (rev 204514)
@@ -1,3 +1,18 @@
+2016-08-16  Jonathan Bedard  <[email protected]>
+
+        False crashes in fast/text/emoji-gender-* tests
+        https://bugs.webkit.org/show_bug.cgi?id=160779
+
+        Reviewed by Alexey Proskuryakov.
+
+        Fix from <rdar://problem/27786762>, where timed out tests falsely report as crashed.
+
+        * Scripts/webkitpy/port/driver.py:
+        (Driver._check_for_driver_crash_or_unresponsiveness): Change call to ‘write’ to disable crash flag.
+        * Scripts/webkitpy/port/driver_unittest.py: Added 3 variable to test version of ‘write.’
+        * Scripts/webkitpy/port/server_process.py:
+        (ServerProcess.write): Allow caller to disable crash flag on exception.
+
 2016-08-15  Simon Fraser  <[email protected]>
 
         webkitpy error in TestRunResults.merge()

Modified: trunk/Tools/Scripts/webkitpy/port/driver.py (204513 => 204514)


--- trunk/Tools/Scripts/webkitpy/port/driver.py	2016-08-16 17:26:16 UTC (rev 204513)
+++ trunk/Tools/Scripts/webkitpy/port/driver.py	2016-08-16 18:03:38 UTC (rev 204514)
@@ -447,7 +447,7 @@
             if child_process_pid:
                 self._port.sample_process(child_process_name, child_process_pid)
             self.error_from_test += error_line
-            self._server_process.write('#SAMPLE FINISHED\n')
+            self._server_process.write('#SAMPLE FINISHED\n', True)  # Must be able to ignore a broken pipe here, target process may already be closed.
             return True
         return self.has_crashed()
 

Modified: trunk/Tools/Scripts/webkitpy/port/driver_unittest.py (204513 => 204514)


--- trunk/Tools/Scripts/webkitpy/port/driver_unittest.py	2016-08-16 17:26:16 UTC (rev 204513)
+++ trunk/Tools/Scripts/webkitpy/port/driver_unittest.py	2016-08-16 18:03:38 UTC (rev 204514)
@@ -206,7 +206,7 @@
             def stop(self, timeout):
                 pass
 
-            def write(self, str):
+            def write(self, bytes, ignore_crash=False):
                 pass
 
         def assert_crash(driver, error_line, crashed, name, pid, unresponsive=False):

Modified: trunk/Tools/Scripts/webkitpy/port/server_process.py (204513 => 204514)


--- trunk/Tools/Scripts/webkitpy/port/server_process.py	2016-08-16 17:26:16 UTC (rev 204513)
+++ trunk/Tools/Scripts/webkitpy/port/server_process.py	2016-08-16 18:03:38 UTC (rev 204514)
@@ -144,7 +144,7 @@
             return self._proc.poll()
         return None
 
-    def write(self, bytes):
+    def write(self, bytes, ignore_crash=False):
         """Write a request to the subprocess. The subprocess is (re-)start()'ed
         if is not already running."""
         if not self._proc:
@@ -153,8 +153,10 @@
             self._proc.stdin.write(bytes)
         except IOError, e:
             self.stop(0.0)
-            # stop() calls _reset(), so we have to set crashed to True after calling stop().
-            self._crashed = True
+            # stop() calls _reset(), so we have to set crashed to True after calling stop()
+            # unless we already know that this is a timeout.
+            if not ignore_crash:
+                self._crashed = True
 
     def _pop_stdout_line_if_ready(self):
         index_after_newline = self._output.find('\n') + 1
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to