Using libmudflap to test a program that uses libxml2, I found that if a program access a constant pointer in a non-instrumented library, mudflap thinks that a read violation has occurred.
A simple test that illustrates this is: a.c: ----------------------------- char *p = "abc"; ----------------------------- b.c: ---------------------------- #include <stdio.h> extern char *p; int main() { char a = p[0]; printf("%c\n",a); return 0; } ---------------------------- compile and link with gcc -shared -fPIC a.c -o liba.so gcc -fmudflap -lmudflap b.c -la -L. -o b When b is run, mudflap prints: -------------------------------- ******* mudflap violation 1 (check/read): time=1142875338.034838 ptr=0xb7e2a521 size=1 pc=0xb7e34317 location=`b.c:5 (main)' /usr/lib/libmudflap.so.0(__mf_check+0x37) [0xb7e34317] ./b(main+0x7a) [0x80487f2] /usr/lib/libmudflap.so.0(__wrap_main+0x176) [0xb7e34ed6] number of nearby objects: 0 --------------------------------- Given how mudflap works, it would be very hard to avoid this false positive. It would be nice if this limitation was documented. Thanks, Rafael