% % rpm -q pcp-libs pcp-libs-devel
pcp-libs-3.10.8-1.fc22.x86_64
pcp-libs-devel-3.10.8-1.fc22.x86_64
% cat foo.c
#include <pcp/pmapi.h>
int main () {
int s1 = pmNewContext(PM_CONTEXT_HOST, "local:");
int s2 = pmDupContext();
pmDestroyContext (s2);
pmDestroyContext (s1);
/* or in s1, s2 sequence */
}
% gcc foo.c -lpcp
% ./a.out
SEGV
% valgrind ./a.out
==14840== Invalid read of size 8
==14840== at 0x4E82040: __pmHashWalkCB (in /usr/lib64/libpcp.so.3)
==14840== by 0x4E48D62: pmDestroyContext (in /usr/lib64/libpcp.so.3)
==14840== by 0x4007AB: main (foo.c:7)
==14840== Address 0x7cf5170 is 0 bytes inside a block of size 8 free'd
==14840== at 0x4C29D6A: free (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14840== by 0x4E81FD7: __pmHashClear (in /usr/lib64/libpcp.so.3)
==14840== by 0x4E48D6A: pmDestroyContext (in /usr/lib64/libpcp.so.3)
==14840== by 0x4007A1: main (foo.c:6)
==14840==
==14840== Invalid free() / delete / delete[] / realloc()
==14840== at 0x4C29D6A: free (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14840== by 0x4E81FD7: __pmHashClear (in /usr/lib64/libpcp.so.3)
==14840== by 0x4E48D6A: pmDestroyContext (in /usr/lib64/libpcp.so.3)
==14840== by 0x4007AB: main (foo.c:7)
==14840== Address 0x7cf5170 is 0 bytes inside a block of size 8 free'd
==14840== at 0x4C29D6A: free (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14840== by 0x4E81FD7: __pmHashClear (in /usr/lib64/libpcp.so.3)
==14840== by 0x4E48D6A: pmDestroyContext (in /usr/lib64/libpcp.so.3)
==14840== by 0x4007A1: main (foo.c:6)
==14840==