2018-10-24 18:24:11 +00:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: John Kleinschmidt <jkleinsc@github.com>
|
|
|
|
Date: Thu, 18 Oct 2018 17:08:28 -0700
|
|
|
|
Subject: verbose_generate_breakpad_symbols.patch
|
|
|
|
|
|
|
|
Temporarily add additional debugging statements to
|
|
|
|
generate_breakpad_symbols.py to determine why it is hanging.
|
|
|
|
|
2018-10-16 00:44:14 +00:00
|
|
|
diff --git a/components/crash/content/tools/generate_breakpad_symbols.py b/components/crash/content/tools/generate_breakpad_symbols.py
|
2019-01-16 18:07:52 +00:00
|
|
|
index 58558b6cd1e3af826a7066c035e1ad589eff4cb5..d9f697749847caf59d78f5643d2efaf7815e050d 100755
|
2018-10-16 00:44:14 +00:00
|
|
|
--- a/components/crash/content/tools/generate_breakpad_symbols.py
|
|
|
|
+++ b/components/crash/content/tools/generate_breakpad_symbols.py
|
2019-01-16 18:07:52 +00:00
|
|
|
@@ -60,7 +60,10 @@ def Resolve(path, exe_path, loader_path, rpaths):
|
2018-10-16 00:44:14 +00:00
|
|
|
return path
|
|
|
|
|
|
|
|
|
|
|
|
-def GetSharedLibraryDependenciesLinux(binary):
|
|
|
|
+def GetSharedLibraryDependenciesLinux(binary, options):
|
2018-10-24 18:24:11 +00:00
|
|
|
+ if options.verbose:
|
2018-10-16 00:44:14 +00:00
|
|
|
+ print "GetSharedLibraryDependencies for %s" % binary
|
|
|
|
+
|
2019-01-16 18:07:52 +00:00
|
|
|
"""Return absolute paths to all shared library dependencies of the binary.
|
2018-10-16 00:44:14 +00:00
|
|
|
|
|
|
|
This implementation assumes that we're running on a Linux system."""
|
2019-01-16 18:07:52 +00:00
|
|
|
@@ -74,6 +77,9 @@ def GetSharedLibraryDependenciesLinux(binary):
|
2018-10-16 00:44:14 +00:00
|
|
|
m = lib_re.match(line)
|
|
|
|
if m:
|
2019-01-16 18:07:52 +00:00
|
|
|
result.append(os.path.abspath(m.group(1)))
|
2018-10-24 18:24:11 +00:00
|
|
|
+ if options.verbose:
|
|
|
|
+ print "Done GetSharedLibraryDependencies for %s" % binary
|
2018-10-16 00:44:14 +00:00
|
|
|
+ print result
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
2019-01-16 18:07:52 +00:00
|
|
|
@@ -168,7 +174,7 @@ def GetSharedLibraryDependencies(options, binary, exe_path):
|
|
|
|
"""Return absolute paths to all shared library dependencies of the binary."""
|
2018-10-16 00:44:14 +00:00
|
|
|
deps = []
|
|
|
|
if sys.platform.startswith('linux'):
|
|
|
|
- deps = GetSharedLibraryDependenciesLinux(binary)
|
|
|
|
+ deps = GetSharedLibraryDependenciesLinux(binary, options)
|
|
|
|
elif sys.platform == 'darwin':
|
|
|
|
deps = GetSharedLibraryDependenciesMac(binary, exe_path)
|
|
|
|
else:
|
2019-01-16 18:07:52 +00:00
|
|
|
@@ -228,7 +234,8 @@ def GetBinaryInfoFromHeaderInfo(header_info):
|
2018-10-16 00:44:14 +00:00
|
|
|
|
|
|
|
def GenerateSymbols(options, binaries):
|
|
|
|
"""Dumps the symbols of binary and places them in the given directory."""
|
|
|
|
-
|
2018-10-24 18:24:11 +00:00
|
|
|
+ if options.verbose:
|
2018-10-16 00:44:14 +00:00
|
|
|
+ print "Generating symbols for %s " % (' '.join(binaries))
|
|
|
|
queue = Queue.Queue()
|
|
|
|
print_lock = threading.Lock()
|
|
|
|
|
2019-01-16 18:07:52 +00:00
|
|
|
@@ -248,8 +255,15 @@ def GenerateSymbols(options, binaries):
|
2018-10-16 00:44:14 +00:00
|
|
|
reason = "Could not locate dump_syms executable."
|
|
|
|
break
|
|
|
|
|
|
|
|
+ if options.verbose:
|
|
|
|
+ with print_lock:
|
|
|
|
+ print "GetBinaryInfoFromHeaderInfo for %s" % (binary)
|
|
|
|
binary_info = GetBinaryInfoFromHeaderInfo(
|
|
|
|
subprocess.check_output([dump_syms, '-i', binary]).splitlines()[0])
|
|
|
|
+ if options.verbose:
|
|
|
|
+ with print_lock:
|
|
|
|
+ print "Done GetBinaryInfoFromHeaderInfo for %s: %s (%s)" % (binary, binary_info.name, binary_info.hash)
|
|
|
|
+
|
|
|
|
if not binary_info:
|
|
|
|
should_dump_syms = False
|
|
|
|
reason = "Could not obtain binary information."
|
2019-01-16 18:07:52 +00:00
|
|
|
@@ -266,8 +280,14 @@ def GenerateSymbols(options, binaries):
|
2018-10-16 00:44:14 +00:00
|
|
|
# See if there is a symbol file already found next to the binary
|
|
|
|
potential_symbol_files = glob.glob('%s.breakpad*' % binary)
|
|
|
|
for potential_symbol_file in potential_symbol_files:
|
|
|
|
+ if options.verbose:
|
|
|
|
+ with print_lock:
|
|
|
|
+ print "Looking at %s as a potential symbol file." % (potential_symbol_file)
|
|
|
|
with open(potential_symbol_file, 'rt') as f:
|
|
|
|
symbol_info = GetBinaryInfoFromHeaderInfo(f.readline())
|
|
|
|
+ if options.verbose:
|
|
|
|
+ with print_lock:
|
|
|
|
+ print "Got symbol_info for %s." % (potential_symbol_file)
|
|
|
|
if symbol_info == binary_info:
|
|
|
|
mkdir_p(os.path.dirname(output_path))
|
|
|
|
shutil.copyfile(potential_symbol_file, output_path)
|