代码拉取完成,页面将自动刷新
#!/bin/bash
# Run memcheck.
# This script can be run on the host, or in the docker
chmod +x valgrind
mkdir -p build
cd build
[[ -z "${CACHEB}" ]] && export CACHEB=../cache
[[ ! -e "${CACHEB}" ]] && mkdir -p ${CACHEB}
[[ -z "${uid}" ]] && export uid=`id -u`
[[ -z "${gid}" ]] && export gid=`id -g`
trap "chown -R $uid:$gid ." EXIT
export CTEST_CONFIGURATION_TYPE=RelWithDebInfo
export CTEST_CMAKE_GENERATOR=Ninja
export XTRA_FLAGS="CMAKE_C_COMPILER=/usr/bin/clang-16;CMAKE_CXX_COMPILER=/usr/bin/clang++-16"
export NO_TESTS=1
time ctest -VV -S ../misc/ctest/memcheck.cmake
src/searchd --mockstack | tail -n +6 > stack.txt
source stack.txt
#export MEMORYCHECK_COMMAND_OPTIONS='--tool=memcheck --leak-check=full --track-origins=yes --time-stamp=yes'
export MANTICORE_THREADS_EX='2/1+2/1'
export NO_TESTS=0
rm -f Testing/Temporary/MemoryChecker.*.log
time ctest -V -S ../misc/ctest/memcheck.cmake
find Testing/Temporary/MemoryChecker.*.log -size 0 -delete
# Analysis of memory leak reports
echo "Analyzing memory leak reports..."
LEAK_FOUND=0
LEAK_PATTERNS=(definitely invalid uninitialized)
# Function to check for memory leaks in a file
check_leaks() {
local file=$1
local test_num=$(basename "$file" | sed -E 's/MemoryChecker\.([0-9]+)\.log/\1/')
for pattern in "${LEAK_PATTERNS[@]}"; do
if grep -i "$pattern" "$file" > /dev/null; then
echo "$pattern DETECTED in test_$test_num"
cat "$file"
LEAK_FOUND=1
fi
done
}
# Process all memory checker log files
for log_file in Testing/Temporary/MemoryChecker.*.log; do
if [ -f "$log_file" ]; then
check_leaks "$log_file"
fi
done
if [ $LEAK_FOUND -eq 1 ]; then
echo "Memory leaks were detected. Check the logs above for details."
exit 1
else
echo "No memory leaks detected."
exit 0
fi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。