aboutsummaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py')
-rw-r--r--packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py33
1 files changed, 15 insertions, 18 deletions
diff --git a/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py b/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py
index e92b967d8adf..6416bccc483d 100644
--- a/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py
+++ b/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py
@@ -8,18 +8,19 @@ from __future__ import print_function
import os, time
import lldb
+from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
-import lldbsuite.test.lldbutil as lldbutil
+from lldbsuite.test import lldbplatform
+from lldbsuite.test import lldbutil
class AsanTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
- @expectedFailureLinux # non-core functionality, need to reenable and fix later (DES 2014.11.07)
+ @expectedFailureAll(oslist=["linux"], bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
@skipIfRemote
@skipUnlessCompilerRt
- @expectedFailureDarwin
def test (self):
self.build ()
self.asan_tests ()
@@ -45,11 +46,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,
@@ -62,8 +62,8 @@ class AsanTestCase(TestBase):
# test the 'memory history' command
self.expect("memory history 'pointer'",
substrs = [
- 'Memory allocated at', 'a.out`f1', 'main.c:%d' % self.line_malloc,
- 'Memory deallocated at', 'a.out`f2', 'main.c:%d' % self.line_free])
+ 'Memory allocated by Thread', 'a.out`f1', 'main.c:%d' % self.line_malloc,
+ 'Memory deallocated by Thread', 'a.out`f2', 'main.c:%d' % self.line_free])
# do the same using SB API
process = self.dbg.GetSelectedTarget().process
@@ -87,17 +87,14 @@ 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'",
substrs = [
- 'Memory allocated at', 'a.out`f1', 'main.c:%d' % self.line_malloc2])
+ 'Memory allocated by Thread', 'a.out`f1', 'main.c:%d' % self.line_malloc2])