#!/bin/sh # # Run valgrind's memory checker against a process using the --watchfd # option. # Dummy assignments for "shellcheck". sourcePath="${sourcePath:-.}"; testSubject="${testSubject:-false}"; workFile1="${workFile1:-.tmp1}"; workFile2="${workFile2:-.tmp2}"; workFile3="${workFile3:-.tmp3}"; workFile4="${workFile4:-.tmp4}" # Load the valgrind function. . "${sourcePath}/tests/run-valgrind.sh" # Skip the test if "-d" is not available. if ! "${testSubject}" -h | grep -Fq ' -d'; then echo "no \`--watchfd' / \`-d' option on this platform" exit 77 fi # Skip the test if "-d" does not work. sleep 2 & sleep 0.1 "${testSubject}" -d "${pid}" -f -i 0.5 >/dev/null 2>"${workFile1}" if grep -Fq ' -d: not available' "${workFile1}"; then echo "no \`--watchfd' / \`-d' option on this platform" exit 77 fi # Check "--watchfd PID:FD". # See the "Watchfd" tests for more detail. seq 1 100 > "${workFile1}" (export line; sleep 1; read -r line; sleep 1; read -r line; sleep 1) <"${workFile1}" & pid=$! sleep 0.1 { runWithValgrind -d "${pid}:0" -f -i 0.5 >/dev/null 2>&1; } 4>&1 || exit 1 # Check "--watchfd PID". seq 1 100 > "${workFile1}" seq 1 300 > "${workFile2}" ( export line sleep 1 read -r line exec 9<"${workFile2}" sleep 1 exec 8<"${workFile1}" exec 7/dev/null 2>&1; } 4>&1 || exit 1 exit 0