WebKit Bugzilla
Attachment 370233 Details for
Bug 179828
: run-webkit-tests not gathering crash logs on Cygwin Python and Windows Python
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-179828-20190520113915.patch (text/plain), 6.89 KB, created by
Fujii Hironori
on 2019-05-19 19:39:17 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Fujii Hironori
Created:
2019-05-19 19:39:17 PDT
Size:
6.89 KB
patch
obsolete
>Subversion Revision: 245508 >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 7b4154cac122433fd670572007188823f004ab8f..d765578642d1065c7f7f8517baecebdf4c730b27 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,34 @@ >+2019-05-19 Fujii Hironori <Hironori.Fujii@sony.com> >+ >+ run-webkit-tests not gathering crash logs on Cygwin Python and Windows Python >+ https://bugs.webkit.org/show_bug.cgi?id=179828 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ ServerProcess should store its Windows PID for Cygwin before >+ process crashing because the Windows PID is required to get a >+ correct CrashLog. >+ >+ CrashLog format has been changed. CrashLogs.GLOBAL_PID_REGEX >+ should accept the new format. >+ >+ * Scripts/webkitpy/common/system/crashlogs.py: >+ (CrashLogs.GLOBAL_PID_REGEX): Accept any words between 'Global' and 'PID:'. >+ >+ * Scripts/webkitpy/port/driver.py: >+ (Driver.has_crashed): >+ (Driver._check_for_driver_crash_or_unresponsiveness): >+ (Driver._read_block): >+ Store server_process.system_pid() to self._crashed_pid instead of server_process.pid(). >+ >+ * Scripts/webkitpy/port/server_process.py: >+ (ServerProcess.__init__): >+ (ServerProcess.system_pid): Added. >+ (ServerProcess._find_system_pid): Added. >+ (ServerProcess._start): Set self._system_pid. >+ * Scripts/webkitpy/port/win.py: >+ (WinPort._get_crash_log): Removed broken old code converting Cygwin pid to Windows pid. >+ > 2019-05-19 Darin Adler <darin@apple.com> > > Change String::number to use "shortest" instead of "fixed precision 6 digits" >diff --git a/Tools/Scripts/webkitpy/common/system/crashlogs.py b/Tools/Scripts/webkitpy/common/system/crashlogs.py >index 8e5fe164c9aeb6f488e9b559d758c21bf7e687d5..695225f0da7ca85eab7faaf48c712ad2a0d5da63 100644 >--- a/Tools/Scripts/webkitpy/common/system/crashlogs.py >+++ b/Tools/Scripts/webkitpy/common/system/crashlogs.py >@@ -37,7 +37,8 @@ _log = logging.getLogger(__name__) > > class CrashLogs(object): > >- GLOBAL_PID_REGEX = re.compile(r'\s+Global\s+PID:\s+\[(?P<pid>\d+)\]') >+ # Matches a string like ' Global D1 PID: [14516]' >+ GLOBAL_PID_REGEX = re.compile(r'\s+Global\b.+\bPID:\s+\[(?P<pid>\d+)\]') > EXIT_PROCESS_PID_REGEX = re.compile(r'Exit process \d+:(?P<pid>\w+), code') > DARWIN_PROCESS_REGEX = re.compile(r'^Process:\s+(?P<process_name>.*) \[(?P<pid>\d+)\]$') > >diff --git a/Tools/Scripts/webkitpy/port/driver.py b/Tools/Scripts/webkitpy/port/driver.py >index 642d684d9d0f2d262e09a49b57ac4576c169e15e..b996cb5fd53bd5c7340202798043de650d2039ec 100644 >--- a/Tools/Scripts/webkitpy/port/driver.py >+++ b/Tools/Scripts/webkitpy/port/driver.py >@@ -387,7 +387,7 @@ class Driver(object): > return True > if self._server_process.has_crashed(): > self._crashed_process_name = self._server_process.process_name() >- self._crashed_pid = self._server_process.pid() >+ self._crashed_pid = self._server_process.system_pid() > return True > return False > >@@ -535,7 +535,7 @@ class Driver(object): > crashed_check = error_line.rstrip('\r\n') > if crashed_check == "#CRASHED": > self._crashed_process_name = self._server_process.process_name() >- self._crashed_pid = self._server_process.pid() >+ self._crashed_pid = self._server_process.system_pid() > return True > elif error_line.startswith("#CRASHED - "): > match = re.match('#CRASHED - (\S+)', error_line) >@@ -693,7 +693,7 @@ class Driver(object): > > if asan_violation_detected and not self._crashed_process_name: > self._crashed_process_name = self._server_process.process_name() >- self._crashed_pid = self._server_process.pid() >+ self._crashed_pid = self._server_process.system_pid() > > block.decode_content() > return block >diff --git a/Tools/Scripts/webkitpy/port/driver_unittest.py b/Tools/Scripts/webkitpy/port/driver_unittest.py >index e51d2a387944c085c05f0a8b88b025fa6b2ff1e6..33389416e402a70ef543f5440c4f54ac9aba2a8c 100644 >--- a/Tools/Scripts/webkitpy/port/driver_unittest.py >+++ b/Tools/Scripts/webkitpy/port/driver_unittest.py >@@ -224,6 +224,9 @@ class DriverTest(unittest.TestCase): > def pid(self): > return 1234 > >+ def system_pid(self): >+ return self.pid() >+ > def process_name(self): > return 'FakeServerProcess' > >diff --git a/Tools/Scripts/webkitpy/port/server_process.py b/Tools/Scripts/webkitpy/port/server_process.py >index 65f47a77ada75b4edec228e638c8b8c6e993dcef..452de1aaf6f6dda1a64ff3eed973e50a8e03a8b6 100644 >--- a/Tools/Scripts/webkitpy/port/server_process.py >+++ b/Tools/Scripts/webkitpy/port/server_process.py >@@ -77,6 +77,7 @@ class ServerProcess(object): > self._treat_no_data_as_crash = treat_no_data_as_crash > self._target_host = target_host or port_obj.host > self._pid = None >+ self._system_pid = None > self._child_processes = {} > self._reset() > >@@ -93,6 +94,9 @@ class ServerProcess(object): > def pid(self): > return self._pid > >+ def system_pid(self): >+ return self._system_pid >+ > def _reset(self): > if getattr(self, '_proc', None): > if self._proc.stdin: >@@ -130,6 +134,7 @@ class ServerProcess(object): > env=self._env, > universal_newlines=self._universal_newlines) > self._pid = self._proc.pid >+ self._system_pid = int(self._port._filesystem.read_text_file('/proc/%d/winpid' % self._pid)) if self._port.host.platform.is_cygwin() else self._pid > self._child_processes = {} > if not self._use_win32_apis: > self._set_file_nonblocking(self._proc.stdout) >diff --git a/Tools/Scripts/webkitpy/port/win.py b/Tools/Scripts/webkitpy/port/win.py >index 8db736f0911cb0feb82ec6ea57833f83871e6f08..66ad13db3ca68c6be7eb90ea1e4d874ced78b009 100644 >--- a/Tools/Scripts/webkitpy/port/win.py >+++ b/Tools/Scripts/webkitpy/port/win.py >@@ -425,11 +425,7 @@ class WinPort(ApplePort): > _log.debug('looking for crash log for %s:%s' % (name, str(pid))) > deadline = now + 5 * int(self.get_option('child_processes', 1)) > while not crash_log and now <= deadline: >- # If the system_pid hasn't been determined yet, just try with the passed in pid. We'll be checking again later >- system_pid = self._executive.pid_to_system_pid.get(pid) >- if system_pid == None: >- break # We haven't mapped cygwin pid->win pid yet >- crash_log = crash_logs.find_newest_log(name, system_pid, include_errors=True, newer_than=newer_than) >+ crash_log = crash_logs.find_newest_log(name, pid, include_errors=True, newer_than=newer_than) > if not wait_for_log: > break > if not crash_log or not [line for line in crash_log.splitlines() if line.startswith('quit:')]:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 179828
:
370035
| 370233