Changeset 245544 in webkit


Ignore:
Timestamp:
May 20, 2019 6:52:52 PM (5 years ago)
Author:
Fujii Hironori
Message:

run-webkit-tests not gathering crash logs on Cygwin Python and Windows Python
https://bugs.webkit.org/show_bug.cgi?id=179828

Reviewed by Jonathan Bedard.

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.

Location:
trunk/Tools
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r245541 r245544  
     12019-05-20  Fujii Hironori  <Hironori.Fujii@sony.com>
     2
     3        run-webkit-tests not gathering crash logs on Cygwin Python and Windows Python
     4        https://bugs.webkit.org/show_bug.cgi?id=179828
     5
     6        Reviewed by Jonathan Bedard.
     7
     8        ServerProcess should store its Windows PID for Cygwin before
     9        process crashing because the Windows PID is required to get a
     10        correct CrashLog.
     11
     12        CrashLog format has been changed. CrashLogs.GLOBAL_PID_REGEX
     13        should accept the new format.
     14
     15        * Scripts/webkitpy/common/system/crashlogs.py:
     16        (CrashLogs.GLOBAL_PID_REGEX): Accept any words between 'Global' and 'PID:'.
     17
     18        * Scripts/webkitpy/port/driver.py:
     19        (Driver.has_crashed):
     20        (Driver._check_for_driver_crash_or_unresponsiveness):
     21        (Driver._read_block):
     22        Store server_process.system_pid() to self._crashed_pid instead of server_process.pid().
     23
     24        * Scripts/webkitpy/port/server_process.py:
     25        (ServerProcess.__init__):
     26        (ServerProcess.system_pid): Added.
     27        (ServerProcess._find_system_pid): Added.
     28        (ServerProcess._start): Set self._system_pid.
     29        * Scripts/webkitpy/port/win.py:
     30        (WinPort._get_crash_log): Removed broken old code converting Cygwin pid to Windows pid.
     31
    1322019-05-20  Aakash Jain  <aakash_jain@apple.com>
    233
  • trunk/Tools/Scripts/webkitpy/common/system/crashlogs.py

    r225959 r245544  
    3838class CrashLogs(object):
    3939
    40     GLOBAL_PID_REGEX = re.compile(r'\s+Global\s+PID:\s+\[(?P<pid>\d+)\]')
     40    # Matches a string like '    Global    D1    PID: [14516]'
     41    GLOBAL_PID_REGEX = re.compile(r'\s+Global\b.+\bPID:\s+\[(?P<pid>\d+)\]')
    4142    EXIT_PROCESS_PID_REGEX = re.compile(r'Exit process \d+:(?P<pid>\w+), code')
    4243    DARWIN_PROCESS_REGEX = re.compile(r'^Process:\s+(?P<process_name>.*) \[(?P<pid>\d+)\]$')
  • trunk/Tools/Scripts/webkitpy/port/driver.py

    r243559 r245544  
    388388        if self._server_process.has_crashed():
    389389            self._crashed_process_name = self._server_process.process_name()
    390             self._crashed_pid = self._server_process.pid()
     390            self._crashed_pid = self._server_process.system_pid()
    391391            return True
    392392        return False
     
    536536        if crashed_check == "#CRASHED":
    537537            self._crashed_process_name = self._server_process.process_name()
    538             self._crashed_pid = self._server_process.pid()
     538            self._crashed_pid = self._server_process.system_pid()
    539539            return True
    540540        elif error_line.startswith("#CRASHED - "):
     
    694694        if asan_violation_detected and not self._crashed_process_name:
    695695            self._crashed_process_name = self._server_process.process_name()
    696             self._crashed_pid = self._server_process.pid()
     696            self._crashed_pid = self._server_process.system_pid()
    697697
    698698        block.decode_content()
  • trunk/Tools/Scripts/webkitpy/port/driver_unittest.py

    r220111 r245544  
    225225                return 1234
    226226
     227            def system_pid(self):
     228                return self.pid()
     229
    227230            def process_name(self):
    228231                return 'FakeServerProcess'
  • trunk/Tools/Scripts/webkitpy/port/server_process.py

    r244080 r245544  
    7878        self._target_host = target_host or port_obj.host
    7979        self._pid = None
     80        self._system_pid = None
    8081        self._child_processes = {}
    8182        self._reset()
     
    9394    def pid(self):
    9495        return self._pid
     96
     97    def system_pid(self):
     98        return self._system_pid
    9599
    96100    def _reset(self):
     
    131135            universal_newlines=self._universal_newlines)
    132136        self._pid = self._proc.pid
     137        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
    133138        self._child_processes = {}
    134139        if not self._use_win32_apis:
  • trunk/Tools/Scripts/webkitpy/port/win.py

    r245169 r245544  
    426426        deadline = now + 5 * int(self.get_option('child_processes', 1))
    427427        while not crash_log and now <= deadline:
    428             # If the system_pid hasn't been determined yet, just try with the passed in pid.  We'll be checking again later
    429             system_pid = self._executive.pid_to_system_pid.get(pid)
    430             if system_pid == None:
    431                 break  # We haven't mapped cygwin pid->win pid yet
    432             crash_log = crash_logs.find_newest_log(name, system_pid, include_errors=True, newer_than=newer_than)
     428            crash_log = crash_logs.find_newest_log(name, pid, include_errors=True, newer_than=newer_than)
    433429            if not wait_for_log:
    434430                break
Note: See TracChangeset for help on using the changeset viewer.