Index: telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py |
diff --git a/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py b/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py |
index aaa3360e9142455cdf1b79ccd37fe216eab3c809..3e9ac8e1f839a29f8b5f7d00a6266e620dd7a56f 100644 |
--- a/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py |
+++ b/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py |
@@ -441,8 +441,14 @@ class DesktopBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
if not cdb: |
logging.warning('cdb.exe not found.') |
return None |
+ # Include all the threads' stacks ("~*k30") in addition to the |
+ # ostensibly crashed stack associated with the exception context |
+ # record (".ecxr;k30"). Note that stack dumps, including that |
+ # for the crashed thread, may not be as precise as the one |
+ # starting from the exception context record. |
output = subprocess.check_output([cdb, '-y', self._browser_directory, |
- '-c', '.ecxr;k30;q', '-z', minidump]) |
+ '-c', '.ecxr;k30;~*k30;q', |
+ '-z', minidump]) |
# cdb output can start the stack with "ChildEBP", "Child-SP", and possibly |
# other things we haven't seen yet. If we can't find the start of the |
# stack, include output from the beginning. |