description: Runs valgrind memory leak detection on YARS to identify memory issues version: 1.0.0 allowed-tools: [Bash, Read]
Check Memory Leaks
This skill uses valgrind to detect memory leaks and memory errors in YARS.
Usage
Automatically invoked when:
- User asks to check for memory leaks
- After refactoring memory management
- During observer pattern removal work
- Before major releases or commits
Steps
# Navigate to build directory
cd build
# Ensure debug build for better stack traces
cmake -DCMAKE_BUILD_TYPE=Debug .. && make -j4
# Run valgrind with leak check
valgrind --leak-check=full \
--show-leak-kinds=all \
--track-origins=yes \
--verbose \
--log-file=valgrind-output.txt \
./bin/yars --iterations 100 --xml ../xml/braitenberg.xml
# Display results
cat valgrind-output.txt
Success Criteria
- ✅ No definite memory leaks detected
- ✅ No invalid memory accesses
- ✅ All heap blocks properly freed
- ✅ Clean valgrind summary
Analysis
Valgrind reports to watch for:
- Definitely lost: Critical leaks that must be fixed
- Indirectly lost: Memory leaked due to parent structure
- Possibly lost: May indicate real leaks
- Still reachable: Memory not freed at exit (less critical)
- Invalid reads/writes: Memory access errors
Notes
- Valgrind significantly slows execution (10-30x slower)
- Use fewer iterations (100-500) to keep runtime reasonable
- Debug build provides better stack traces
- Some false positives possible from external libraries
- Focus on "definitely lost" and "invalid" errors first