Fix a bug where using "thread backtrace unique" would switch you to (#140993)

always using the "frame-format-unique" even when you weren't doing the
unique backtrace mode.
This commit is contained in:
jimingham
2025-05-22 10:35:35 -07:00
committed by GitHub
parent e72d8b2553
commit 8e3f44d68b
2 changed files with 25 additions and 1 deletions

View File

@@ -37,6 +37,8 @@ void CommandObjectIterateOverThreads::DoExecute(Args &command,
result.SetStatus(m_success_return);
bool all_threads = false;
m_unique_stacks = false;
if (command.GetArgumentCount() == 0) {
Thread *thread = m_exe_ctx.GetThreadPtr();
if (thread)

View File

@@ -132,10 +132,32 @@ class NumberOfThreadsTestCase(TestBase):
# Construct our expected back trace string
expect_string = "10 thread(s)%s" % (expect_threads)
# There was a bug where if you used 'thread backtrace unique'
# we would switch all future backtraces to use the
# "frame-format-unique" not the "frame-format". Make
# sure we don't do that...
setting_data = self.dbg.GetSetting("frame-format-unique")
setting_str = setting_data.GetStringValue(1000)
setting_str = "UNIQUE: " + setting_str
lldb.SBDebugger.SetInternalVariable(
"frame-format-unique", setting_str, self.dbg.GetInstanceName()
)
# Now that we are stopped, we should have 10 threads waiting in the
# thread3 function. All of these threads should show as one stack.
self.expect(
"thread backtrace unique",
"Backtrace with unique stack shown correctly",
substrs=[expect_string, "main.cpp:%d" % self.thread3_before_lock_line],
substrs=[
expect_string,
"UNIQUE:",
"main.cpp:%d" % self.thread3_before_lock_line,
],
)
# Make sure setting the unique flag in the command isn't
# persistent:
self.expect(
"thread backtrace",
"Backtrace unique is not sticky",
substrs=["UNIQUE:"],
matching=False,
)