Try to fix 10.6 debug perma-orange that results from fix_macosx_stack.py not dealing with atos's complaint about lack of symbols
authorJesse Ruderman <jruderman@gmail.com>
Tue, 20 Apr 2010 17:19:20 -0700
changeset 41046 d39bed41e215e4268e4d272c37bf4d555bb098fd
parent 41045 fdc3abea224b72db1b79872ba3fde627d96f2600
child 41047 3190bbe377cd92662e9f0cb3b25273ac3fa871d7
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone1.9.3a5pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
Try to fix 10.6 debug perma-orange that results from fix_macosx_stack.py not dealing with atos's complaint about lack of symbols
tools/rb/fix_macosx_stack.py
--- a/tools/rb/fix_macosx_stack.py
+++ b/tools/rb/fix_macosx_stack.py
@@ -141,17 +141,26 @@ def fixSymbols(line):
     if result is not None:
         # before allows preservation of balance trees
         # after allows preservation of counts
         (before, file, address, after) = result.groups()
         address = int(address, 16)
 
         if os.path.exists(file) and os.path.isfile(file):
             address += address_adjustment(file)
-            info = addressToSymbol(file, address)
+            try:
+                info = addressToSymbol(file, address)
+                if info.startswith("atos cannot"):
+                    # This can happen due to bug 550335 or bug 558947.
+                    sys.stderr.write("fix_macosx_stack will not convert some stack-trace addresses because: " + info + "\n")
+                    return line
+            except IOError:
+                # IOError can be the result of attempting to continue to use an
+                # atos process that has exited (e.g. due to the error above)
+                return line
 
             # atos output seems to have three forms:
             #   address
             #   address (in foo.dylib)
             #   symbol (in foo.dylib) (file:line)
             symresult = atos_sym_re.match(info)
             if symresult is not None:
                 # Print the first two forms as-is, and transform the third