Skip testing of watchpoint hit-count/ignore-count on multithreaded
Skip all watchpoint hit-count/ignore-count tests for multithreaded API tests for now on arm64 Darwin. On AArch64, insns that trigger a WP are rolled back and we are notified. lldb needs to disable the WP, insn step, re-enable it, then report it to the user. lldb only does this full step action for the "selected thread", and so when a program stops with multiple threads hitting a stop reason, some of them watchpoints, any non-selected-thread will not be completed in this way. But all threads with the initial watchpoint exception will have their hit-count/ignore-counts updated. When we resume execution, the other threads sitting at the instruction will again execute & trigger the WP exceptoin again, repeating until we've gone through all of the threads. This bug is being tracked in llvm.org/pr49433 and inside apple in rdar://93863107
This commit is contained in:
@@ -25,6 +25,13 @@ class WatchpointIgnoreCountTestCase(TestBase):
|
||||
self.line = line_number(
|
||||
self.source, '// Set break point at this line.')
|
||||
|
||||
# on arm64 targets, lldb has incorrect hit-count / ignore-counts
|
||||
# for watchpoints when they are hit with multiple threads at
|
||||
# the same time. Tracked as llvm.org/pr49433
|
||||
# or rdar://93863107 inside Apple.
|
||||
def affected_by_radar_93863107(self):
|
||||
return (self.getArchitecture() in ['arm64', 'arm64e']) and self.platformIsDarwin()
|
||||
|
||||
# Read-write watchpoints not supported on SystemZ
|
||||
@expectedFailureAll(archs=['s390x'])
|
||||
def test_set_watch_ignore_count(self):
|
||||
@@ -87,5 +94,6 @@ class WatchpointIgnoreCountTestCase(TestBase):
|
||||
# Verify some vital statistics.
|
||||
self.assertTrue(watchpoint)
|
||||
self.assertEqual(watchpoint.GetWatchSize(), 4)
|
||||
self.assertEqual(watchpoint.GetHitCount(), 2)
|
||||
if not self.affected_by_radar_93863107():
|
||||
self.assertEqual(watchpoint.GetHitCount(), 2)
|
||||
print(watchpoint)
|
||||
|
||||
Reference in New Issue
Block a user