/* This exercises the code that was causing this bug: valgrind: vg_cachesim.c:389 (get_BBCC): Assertion `((Bool)0) == remove' failed. in Cachegrind 1.0.0 and 1.0.1, that was caused by unloading symbols before invalidating translations. */ #include <stdio.h> #include <stdlib.h> #include <dlfcn.h> int main(int argc, char **argv) { void *handle; void (*myprint)(void); char *error; handle = dlopen ("./myprint.so", RTLD_LAZY); if (!handle) { fputs (dlerror(), stderr); exit(1); } myprint = dlsym(handle, "myprint"); if ((error = dlerror()) != NULL) { fprintf (stderr, "%s\n", error); exit(1); } (*myprint)(); /* Assertion failure was happening here */ dlclose(handle); return 0; }