diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py')
-rw-r--r-- | packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py | 33 |
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]) |