[compiler-rt] r370025 - [asan_symbolize] Fix broken pipe handling for python 2.7

Alexander Richardson via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 27 00:27:41 PDT 2019


Author: arichardson
Date: Tue Aug 27 00:27:41 2019
New Revision: 370025

URL: http://llvm.org/viewvc/llvm-project?rev=370025&view=rev
Log:
[asan_symbolize] Fix broken pipe handling for python 2.7

I D65322 I added a check for BrokenPipeError. However, python 2.7 doesn't
have BrokenPipeError. To be python 2.7 and 3 compatible we need to catch
IOError instead and check for errno == errno.EPIPE.

Modified:
    compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py

Modified: compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py?rev=370025&r1=370024&r2=370025&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py (original)
+++ compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py Tue Aug 27 00:27:41 2019
@@ -21,6 +21,7 @@ script itself.
 """
 import argparse
 import bisect
+import errno
 import getopt
 import logging
 import os
@@ -202,9 +203,14 @@ class Addr2LineSymbolizer(Symbolizer):
           logging.debug("got empty function and file name -> unknown function")
           function_name = '??'
           file_name = '??:0'
-        lines.append((function_name, file_name));
-    except BrokenPipeError:
-      logging.debug("got broken pipe, addr2line returncode=%d" % self.pipe.poll())
+        lines.append((function_name, file_name))
+    except IOError as e:
+      # EPIPE happens if addr2line exits early (which some implementations do
+      # if an invalid file is passed).
+      if e.errno == errno.EPIPE:
+        logging.debug("addr2line exited early (broken pipe), returncode=%d" % self.pipe.poll())
+      else:
+        logging.debug("unexpected I/O exception communicating with addr2line", exc_info=e)
       lines.append(('??', '??:0'))
     except Exception as e:
       logging.debug("got unknown exception communicating with addr2line", exc_info=e)




More information about the llvm-commits mailing list