[Lldb-commits] [lldb] r265400 - Fixing AddressSanitizer tests (update expectations for current ASan, make it work on OS X 10.10 and older).

Kuba Brecka via lldb-commits lldb-commits at lists.llvm.org
Tue Apr 5 07:13:24 PDT 2016


Author: kuba.brecka
Date: Tue Apr  5 09:13:22 2016
New Revision: 265400

URL: http://llvm.org/viewvc/llvm-project?rev=265400&view=rev
Log:
Fixing AddressSanitizer tests (update expectations for current ASan, make it work on OS X 10.10 and older).


Modified:
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py

Modified: lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py?rev=265400&r1=265399&r2=265400&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py Tue Apr  5 09:13:22 2016
@@ -47,11 +47,10 @@ class AsanTestCase(TestBase):
 
         self.runCmd("run")
 
-        # ASan will relaunch the process to insert its library.
-        self.expect("thread list", "Process should be stopped due to exec.",
-            substrs = ['stopped', 'stop reason = '])
-
-        self.runCmd("continue")
+        stop_reason = self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopReason()
+        if stop_reason == lldb.eStopReasonExec:
+            # On OS X 10.10 and older, we need to re-exec to enable interceptors.
+            self.runCmd("continue")
 
         # the stop reason of the thread should be breakpoint.
         self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
@@ -89,15 +88,12 @@ class AsanTestCase(TestBase):
         self.assertTrue(history_thread.num_frames >= 2)
         self.assertEqual(history_thread.frames[1].GetLineEntry().GetFileSpec().GetFilename(), "main.c")
         self.assertEqual(history_thread.frames[1].GetLineEntry().GetLine(), self.line_malloc)
-
-        # now let's break when an ASan report occurs and try the API then
-        self.runCmd("breakpoint set -n __asan_report_error")
-
+        
+        # ASan will break when a report occurs and we'll try the API then
         self.runCmd("continue")
 
-        # the stop reason of the thread should be breakpoint.
-        self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
-            substrs = ['stopped', 'stop reason = breakpoint'])
+        self.expect("thread list", "Process should be stopped due to ASan report",
+            substrs = ['stopped', 'stop reason = Use of deallocated memory detected'])
 
         # make sure the 'memory history' command still works even when we're generating a report now
         self.expect("memory history 'another_pointer'",

Modified: lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py?rev=265400&r1=265399&r2=265400&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py Tue Apr  5 09:13:22 2016
@@ -40,16 +40,10 @@ class AsanTestReportDataCase(TestBase):
         self.expect("file " + exe, patterns = [ "Current executable set to .*a.out" ])
         self.runCmd("run")
 
-        # ASan will relaunch the process to insert its library.
-        self.expect("thread list", "Process should be stopped due to exec.",
-            substrs = ['stopped', 'stop reason = '])
-
-        # no extended info when we have no ASan report
-        thread = self.dbg.GetSelectedTarget().process.GetSelectedThread()
-        s = lldb.SBStream()
-        self.assertFalse(thread.GetStopReasonExtendedInfoAsJSON(s))
-
-        self.runCmd("continue")
+        stop_reason = self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopReason()
+        if stop_reason == lldb.eStopReasonExec:
+            # On OS X 10.10 and older, we need to re-exec to enable interceptors.
+            self.runCmd("continue")
 
         self.expect("thread list", "Process should be stopped due to ASan report",
             substrs = ['stopped', 'stop reason = Use of deallocated memory detected'])
@@ -63,7 +57,7 @@ class AsanTestReportDataCase(TestBase):
             substrs = ["access_size", "access_type", "address", "pc", "description", "heap-use-after-free"])
 
         output_lines = self.res.GetOutput().split('\n')
-        json_line = output_lines[2]
+        json_line = '\n'.join(output_lines[2:])
         data = json.loads(json_line)
         self.assertEqual(data["description"], "heap-use-after-free")
         self.assertEqual(data["instrumentation_class"], "AddressSanitizer")




More information about the lldb-commits mailing list