This reverts commit 82a38837150099288a1262391ef43e1fd69ffde4. The original version had a copy-paste error: using the Interrupt timeout for the ResumeSynchronous wait, which is clearly wrong. This error would have been evident with real use, but the interrupt is long enough that it only caused one testsuite failure (in the Swift fork). Anyway, I found that mistake and fixed it and checked all the other places where I had to plumb through a timeout, and added a test with a short interrupt timeout stepping over a function that takes 3x the interrupt timeout to complete, so that should detect a similar mistake in the future.
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
"""
|
|
This is to make sure that the interrupt timer
|
|
doesn't influence synchronous user level stepping.
|
|
"""
|
|
|
|
import lldb
|
|
import lldbsuite.test.lldbutil as lldbutil
|
|
from lldbsuite.test.lldbtest import *
|
|
|
|
|
|
class TestStepVrsInterruptTimeout(TestBase):
|
|
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
|
|
NO_DEBUG_INFO_TESTCASE = True
|
|
|
|
def test_step_vrs_interrupt(self):
|
|
"""This test is to make sure that the interrupt timeout
|
|
doesn't cause use to flub events from a synchronous step."""
|
|
self.build()
|
|
self.main_source_file = lldb.SBFileSpec("main.cpp")
|
|
self.sample_test()
|
|
|
|
def sample_test(self):
|
|
"""You might use the test implementation in several ways, say so here."""
|
|
|
|
# This function starts a process, "a.out" by default, sets a source
|
|
# breakpoint, runs to it, and returns the thread, process & target.
|
|
# It optionally takes an SBLaunchOption argument if you want to pass
|
|
# arguments or environment variables.
|
|
(target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(self,
|
|
"Set a breakpoint here", self.main_source_file)
|
|
self.dbg.SetAsync(False)
|
|
self.runCmd("settings set target.process.interrupt-timeout 1")
|
|
thread.StepOver()
|
|
self.assertEqual(process.GetState(), lldb.eStateStopped, "Stopped like we should")
|