Author: labath Date: Mon Oct 7 10:17:53 2019 New Revision: 373925 URL: http://llvm.org/viewvc/llvm-project?rev=373925&view=rev Log: ProcessInstanceInfoMatch: Don't match processes with no name if a name match was requested
Since D68289, a couple of tests on linux started being extremely flaky. All of them were doing name-based attaching and were failing because they couldn't find an unambiguous process to attach to. The patch above changed the process finding logic, so that failure to find a process name does not constitute an error. This meant that a lot more transient processes showed up in the process list during the test suite run. Previously, these processes would not appear as they would be gone by the time we went to read their executable name, arguments, etc. Now, this alone should not cause an issue were it not for the fact that we were considering a process with no name as if it matched by default (even if we were explicitly searching for a process with a specified name). This meant that any of the "transient" processes with no name would make the name match ambiguous. That clearly seems like a bug to me so I fix that. Modified: lldb/trunk/source/Utility/ProcessInfo.cpp lldb/trunk/unittests/Utility/ProcessInstanceInfoTest.cpp Modified: lldb/trunk/source/Utility/ProcessInfo.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/ProcessInfo.cpp?rev=373925&r1=373924&r2=373925&view=diff ============================================================================== --- lldb/trunk/source/Utility/ProcessInfo.cpp (original) +++ lldb/trunk/source/Utility/ProcessInfo.cpp Mon Oct 7 10:17:53 2019 @@ -244,7 +244,7 @@ void ProcessInstanceInfo::DumpAsTableRow } bool ProcessInstanceInfoMatch::NameMatches(const char *process_name) const { - if (m_name_match_type == NameMatch::Ignore || process_name == nullptr) + if (m_name_match_type == NameMatch::Ignore) return true; const char *match_name = m_match_info.GetName(); if (!match_name) Modified: lldb/trunk/unittests/Utility/ProcessInstanceInfoTest.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/ProcessInstanceInfoTest.cpp?rev=373925&r1=373924&r2=373925&view=diff ============================================================================== --- lldb/trunk/unittests/Utility/ProcessInstanceInfoTest.cpp (original) +++ lldb/trunk/unittests/Utility/ProcessInstanceInfoTest.cpp Mon Oct 7 10:17:53 2019 @@ -91,3 +91,20 @@ TEST(ProcessInstanceInfo, DumpTable_inva )", s.GetData()); } + +TEST(ProcessInstanceInfoMatch, Name) { + ProcessInstanceInfo info_bar, info_empty; + info_bar.GetExecutableFile().SetFile("/foo/bar", FileSpec::Style::posix); + + ProcessInstanceInfoMatch match; + match.SetNameMatchType(NameMatch::Equals); + match.GetProcessInfo().GetExecutableFile().SetFile("bar", + FileSpec::Style::posix); + + EXPECT_TRUE(match.Matches(info_bar)); + EXPECT_FALSE(match.Matches(info_empty)); + + match.GetProcessInfo().GetExecutableFile() = FileSpec(); + EXPECT_TRUE(match.Matches(info_bar)); + EXPECT_TRUE(match.Matches(info_empty)); +} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits