/!\ This page is primarily intended for Mercurial's developers.

{i} This page is an incomplete stub. Please help improve this page by expanding it, following our wiki style guidelines.

C Verification Tools

Ways to verify the C extension you're working on isn't broken.


  1. ASAN
  2. cpychecker


ASAN is an address sanitizer that detects memory access to unallocated or previously-freed memory.

Bryan O'Sullivan describes using it with Mercurial here.

2. cpychecker

cpychecker checks for common errors in cpython extensions like over-retaining or under-retaining a PyObject. It seems to be easily confused, but it was extremely helpful and found a lot of little problems in late 2014.

Augie ran it vaguely like this:

for file in $(hg files 'set:**.c') ; do                                         
  $GCC_PYTHON_PLUGIN/gcc-with-cpychecker -c $(python-config --includes) $file