MCPcopy Create free account
hub / github.com/Kitware/CMake / ProcessMemCheckValgrindOutput

Method ProcessMemCheckValgrindOutput

Source/CTest/cmCTestMemCheckHandler.cxx:909–1034  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

907}
908
909bool cmCTestMemCheckHandler::ProcessMemCheckValgrindOutput(
910 std::string const& str, std::string& log, std::vector<int>& results)
911{
912 std::vector<std::string> lines;
913 cmsys::SystemTools::Split(str, lines);
914 bool unlimitedOutput = false;
915 if (str.find("CTEST_FULL_OUTPUT") != std::string::npos ||
916 this->TestOptions.OutputSizeFailed == 0) {
917 unlimitedOutput = true;
918 }
919
920 std::string::size_type cc;
921
922 std::ostringstream ostr;
923 log.clear();
924
925 int defects = 0;
926
927 cmsys::RegularExpression valgrindLine("^==[0-9][0-9]*==");
928
929 cmsys::RegularExpression vgFIM(
930 R"(== .*Invalid free\(\) / delete / delete\[\])");
931 cmsys::RegularExpression vgFMM(
932 R"(== .*Mismatched free\(\) / delete / delete \[\])");
933 cmsys::RegularExpression vgMLK1(
934 "== .*[0-9,]+ bytes in [0-9,]+ blocks are definitely lost"
935 " in loss record [0-9,]+ of [0-9,]+");
936 cmsys::RegularExpression vgMLK2(
937 "== .*[0-9,]+ \\([0-9,]+ direct, [0-9,]+ indirect\\)"
938 " bytes in [0-9,]+ blocks are definitely lost"
939 " in loss record [0-9,]+ of [0-9,]+");
940 cmsys::RegularExpression vgPAR(
941 "== .*Syscall param .* (contains|points to) unaddressable byte\\(s\\)");
942 cmsys::RegularExpression vgMPK1(
943 "== .*[0-9,]+ bytes in [0-9,]+ blocks are possibly lost in"
944 " loss record [0-9,]+ of [0-9,]+");
945 cmsys::RegularExpression vgMPK2(
946 "== .*[0-9,]+ bytes in [0-9,]+ blocks are still reachable"
947 " in loss record [0-9,]+ of [0-9,]+");
948 cmsys::RegularExpression vgUMC(
949 "== .*Conditional jump or move depends on uninitiali[sz]ed value\\(s\\)");
950 cmsys::RegularExpression vgUMR1(
951 "== .*Use of uninitiali[sz]ed value of size [0-9,]+");
952 cmsys::RegularExpression vgUMR2("== .*Invalid read of size [0-9,]+");
953 cmsys::RegularExpression vgUMR3("== .*Jump to the invalid address ");
954 cmsys::RegularExpression vgUMR4(
955 "== .*Syscall param .* contains "
956 "uninitiali[sz]ed or unaddressable byte\\(s\\)");
957 cmsys::RegularExpression vgUMR5("== .*Syscall param .* uninitiali[sz]ed");
958 cmsys::RegularExpression vgIPW("== .*Invalid write of size [0-9,]+");
959 cmsys::RegularExpression vgABR("== .*pthread_mutex_unlock: mutex is "
960 "locked by a different thread");
961 std::vector<std::string::size_type> nonValGrindOutput;
962 auto sttime = std::chrono::steady_clock::now();
963 cmCTestOptionalLog(this->CTest, DEBUG,
964 "Start test: " << lines.size() << std::endl, this->Quiet);
965 std::string::size_type totalOutputSize = 0;
966 for (cc = 0; cc < lines.size(); cc++) {

Callers 1

ProcessMemCheckOutputMethod · 0.95

Calls 5

push_backMethod · 0.80
strMethod · 0.80
findMethod · 0.45
clearMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected