[GTK] fix up the GDB backtrace report tool
authorphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 11 Nov 2014 09:01:40 +0000 (09:01 +0000)
committerphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 11 Nov 2014 09:01:40 +0000 (09:01 +0000)
https://bugs.webkit.org/show_bug.cgi?id=138564

Reviewed by Carlos Garcia Campos.

* Scripts/webkitpy/port/gtk.py:
(GtkPort._get_crash_log): Match the process name reported by the
driver with the GTK port WebProcess executable filename.
* Scripts/webkitpy/port/linux_get_crash_log.py:
(GDBCrashLogGenerator._get_gdb_output): Invoke gdb for the crashed
program.
(GDBCrashLogGenerator.generate_crash_log): Use %E in the core
pattern to workaround the 16 characters size limit of %e.

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

Tools/ChangeLog
Tools/Scripts/webkitpy/port/gtk.py
Tools/Scripts/webkitpy/port/linux_get_crash_log.py

index 8bc85f0..6491094 100644 (file)
@@ -1,3 +1,19 @@
+2014-11-10  Philippe Normand  <pnormand@igalia.com>
+
+        [GTK] fix up the GDB backtrace report tool
+        https://bugs.webkit.org/show_bug.cgi?id=138564
+
+        Reviewed by Carlos Garcia Campos.
+
+        * Scripts/webkitpy/port/gtk.py:
+        (GtkPort._get_crash_log): Match the process name reported by the
+        driver with the GTK port WebProcess executable filename.
+        * Scripts/webkitpy/port/linux_get_crash_log.py:
+        (GDBCrashLogGenerator._get_gdb_output): Invoke gdb for the crashed
+        program.
+        (GDBCrashLogGenerator.generate_crash_log): Use %E in the core
+        pattern to workaround the 16 characters size limit of %e.
+
 2014-11-10  Conrad Shultz  <conrad_shultz@apple.com>
 
         Unreviewed, moved myself to the list of committers.
index 8e1693a..338e2d1 100644 (file)
@@ -207,6 +207,7 @@ class GtkPort(Port):
         return super(GtkPort, self).check_sys_deps(needs_http) and self._driver_class().check_driver(self)
 
     def _get_crash_log(self, name, pid, stdout, stderr, newer_than):
+        name = "WebKitWebProcess" if name == "WebProcess" else name
         return GDBCrashLogGenerator(name, pid, newer_than, self._filesystem, self._path_to_driver).generate_crash_log(stdout, stderr)
 
     def test_expectations_file_position(self):
index 35d35de..5dba002 100644 (file)
@@ -40,7 +40,8 @@ class GDBCrashLogGenerator(object):
         self._path_to_driver = path_to_driver
 
     def _get_gdb_output(self, coredump_path):
-        cmd = ['gdb', '-ex', 'thread apply all bt 1024', '--batch', str(self._path_to_driver()), coredump_path]
+        process_name = os.path.join(os.path.dirname(str(self._path_to_driver())), self.name)
+        cmd = ['gdb', '-ex', 'thread apply all bt 1024', '--batch', process_name, coredump_path]
         proc = subprocess.Popen(cmd, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
         stdout, stderr = proc.communicate()
         errors = [stderr_line.strip().decode('utf8', 'ignore') for stderr_line in stderr.splitlines()]
@@ -72,7 +73,7 @@ class GDBCrashLogGenerator(object):
         if not crash_log:
             if not log_directory:
                 log_directory = "/path/to/coredumps"
-            core_pattern = os.path.join(log_directory, "core-pid_%p-_-process_%e")
+            core_pattern = os.path.join(log_directory, "core-pid_%p-_-process_%E")
             crash_log = """\
 Coredump %(expected_crash_dump_filename)s not found. To enable crash logs: