Enable sanitizers in CI
At the moment the CI test suite is running without any sanitizers[1] to help detect issues such as memory corruption/safety issues as well as undefined behavior. Adding an additional CI build/test run with AddressSanitizer[2] and UndefinedBehaviorSanitizer[3] enabled will help find existing issues and prevent regressions (perhaps a separate build with MemorySanitizer[4] too).
Since many other project depend on Pixman and do enable sanitizers in their test suites Pixman issues are being discovered indirectly[5][6][7]. We are currently trying to enable more UBSan checks in Firefox and we are coming across Pixman issues. Patches are being submitted for the issues but without sanitizers enable in Pixman CI there is nothing to help prevent regressions.
I ran the test suite locally with an ASan+UBSan build.
$ CC=clang CFLAGS="-g -O2 -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=undefined" LDFLAGS="-fsanitize=address,undefined" ./configure --disable-shared
$ ASAN_OPTIONS=detect_leaks=0 UBSAN_OPTIONS=print_stacktrace=1 make -j4 check
This did turn up a number of results but I believe many of them are duplicates and should be relatively simple to fix.
I'd be happy to test and help where possible.
Thanks, Tyson