WebKit Bugzilla
Attachment 370035 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-20190516193045.patch (text/plain), 7.22 KB, created by
Fujii Hironori
on 2019-05-16 03:30:46 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Fujii Hironori
Created:
2019-05-16 03:30:46 PDT
Size:
7.22 KB
patch
obsolete
>Subversion Revision: 245321 >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 40a60b502837efb3b0b6ea60ebf362d4c5cf61d9..22322eebc0a3c71ddac6aeb55c5577689283b1c8 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,33 @@ >+2019-05-16 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 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-14 Andy Estes <aestes@apple.com> > > [Apple Pay] Payment APIs should be completely disabled in web views into which clients have injected user scripts >diff --git a/Tools/Scripts/webkitpy/common/system/crashlogs.py b/Tools/Scripts/webkitpy/common/system/crashlogs.py >index 8e5fe164c9aeb6f488e9b559d758c21bf7e687d5..b1adefe4ea8d28c1a70b78f20a7246e9d9930855 100644 >--- a/Tools/Scripts/webkitpy/common/system/crashlogs.py >+++ b/Tools/Scripts/webkitpy/common/system/crashlogs.py >@@ -37,7 +37,7 @@ _log = logging.getLogger(__name__) > > class CrashLogs(object): > >- GLOBAL_PID_REGEX = re.compile(r'\s+Global\s+PID:\s+\[(?P<pid>\d+)\]') >+ 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..929eaeaa10c53bf53cf20f45c10ddd82546b9d10 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: >@@ -119,6 +123,11 @@ class ServerProcess(object): > flags = fcntl.fcntl(file.fileno(), fcntl.F_GETFL) > fcntl.fcntl(file.fileno(), fcntl.F_SETFL, flags | os.O_NONBLOCK) > >+ def _find_system_pid(self, pid): >+ if self._port.host.platform.is_cygwin(): >+ return int(self._port._filesystem.read_text_file('/proc/%d/winpid' % pid)) >+ return pid >+ > def _start(self): > if self._proc: > raise ValueError("%s already running" % self._name) >@@ -130,6 +139,7 @@ class ServerProcess(object): > env=self._env, > universal_newlines=self._universal_newlines) > self._pid = self._proc.pid >+ self._system_pid = self._find_system_pid(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