ctest_memcheck: ignore false-positives in CUDA's compute-sanitizer
Add a list of false-positive messages from CUDA's compute-sanitizer to the CTest memcheck. Fixes: #24001
This commit is contained in:
parent
2133cf2c8e
commit
59fcbba65e
@ -1177,6 +1177,13 @@ bool cmCTestMemCheckHandler::ProcessMemCheckCudaOutput(
|
||||
// generic error: ignore ERROR SUMMARY, CUDA-MEMCHECK and others
|
||||
"== ([A-Z][a-z].*)"
|
||||
};
|
||||
// matchers for messages that aren't defects, but caught by above matchers
|
||||
std::vector<cmsys::RegularExpression> false_positive_matchers{
|
||||
"== Error: No attachable process found.*timed-out",
|
||||
"== Default timeout can be adjusted with --launch-timeout",
|
||||
"== Error: Target application terminated before first instrumented API",
|
||||
"== Tracking kernels launched by child processes requires"
|
||||
};
|
||||
|
||||
std::vector<std::string::size_type> nonMemcheckOutput;
|
||||
auto sttime = std::chrono::steady_clock::now();
|
||||
@ -1196,11 +1203,17 @@ bool cmCTestMemCheckHandler::ProcessMemCheckCudaOutput(
|
||||
if (leakExpr.find(line)) {
|
||||
failure = static_cast<int>(this->FindOrAddWarning("Memory leak"));
|
||||
} else {
|
||||
for (auto& matcher : matchers) {
|
||||
if (matcher.find(line)) {
|
||||
auto match_predicate =
|
||||
[&line](cmsys::RegularExpression& matcher) -> bool {
|
||||
return matcher.find(line);
|
||||
};
|
||||
auto const pos_matcher =
|
||||
std::find_if(matchers.begin(), matchers.end(), match_predicate);
|
||||
if (pos_matcher != matchers.end()) {
|
||||
if (!std::any_of(false_positive_matchers.begin(),
|
||||
false_positive_matchers.end(), match_predicate)) {
|
||||
failure =
|
||||
static_cast<int>(this->FindOrAddWarning(matcher.match(1)));
|
||||
break;
|
||||
static_cast<int>(this->FindOrAddWarning(pos_matcher->match(1)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -277,3 +277,12 @@ file(APPEND "${LOG_FILE}"
|
||||
=========
|
||||
========= RACECHECK SUMMARY: 12 hazards displayed (0 errors, 12 warnings)
|
||||
")
|
||||
|
||||
# false-positives
|
||||
file(APPEND "${LOG_FILE}"
|
||||
"========= COMPUTE-SANITIZER
|
||||
========= Error: Target application terminated before first instrumented API call
|
||||
========= Tracking kernels launched by child processes requires the --target-processes all option.
|
||||
========= Error: No attachable process found. compute-sanitizer timed-out.
|
||||
========= Default timeout can be adjusted with --launch-timeout. Awaiting target completion.
|
||||
")
|
||||
|
Loading…
Reference in New Issue
Block a user