These are some samples of the output, showing the valgrind output. They've all been recorded on my machine, except for the last one which was on my friend's (and has more debugging information that you might find more useful). The lines before and after are the testcase's output showing some progress. ------ poster 56500000 waiter 56500000 ==2005-04-30 14:38:21.836 464== Thread 3: ==2005-04-30 14:38:21.836 464== Syscall param futex(futex) points to unaddressable byte(s) ==2005-04-30 14:38:21.836 464== at 0x1B9244A2: sem_post@@GLIBC_2.1 (in /lib/libpthread-2.3.4.so) ==2005-04-30 14:38:21.836 464== by 0x1B9209A0: start_thread (in /lib/libpthread-2.3.4.so) ==2005-04-30 14:38:21.836 464== by 0x1B9DD9E9: clone (in /lib/libc-2.3.4.so) ==2005-04-30 14:38:21.836 464== Address 0x1C2EB818 is 0 bytes inside a block of size 16 free'd ==2005-04-30 14:38:21.836 464== at 0x1B902B5C: free (vg_replace_malloc.c:152) ==2005-04-30 14:38:21.836 464== by 0x80486E5: waiter (semtest.c:38) ==2005-04-30 14:38:21.836 464== by 0x1B9209A0: start_thread (in /lib/libpthread-2.3.4.so) ==2005-04-30 14:38:21.836 464== by 0x1B9DD9E9: clone (in /lib/libc-2.3.4.so) poster 57000000 waiter 57000000 ------ poster 128500000 waiter 128500000 ==2005-04-30 16:45:36.865 5908== Thread 3: ==2005-04-30 16:45:36.865 5908== Syscall param futex(futex) points to unaddressable byte(s) ==2005-04-30 16:45:36.866 5908== at 0x1B9244A2: sem_post@@GLIBC_2.1 (in /lib/libpthread-2.3.4.so) ==2005-04-30 16:45:36.866 5908== by 0x1B9209A0: start_thread (in /lib/libpthread-2.3.4.so) ==2005-04-30 16:45:36.866 5908== by 0x1B9DD9E9: clone (in /lib/libc-2.3.4.so) ==2005-04-30 16:45:36.868 5908== Address 0x1C2F0758 is 0 bytes inside a block of size 16 free'd ==2005-04-30 16:45:36.868 5908== at 0x1B902B5C: free (vg_replace_malloc.c:152) ==2005-04-30 16:45:36.868 5908== by 0x80486E5: waiter (semtest.c:38) ==2005-04-30 16:45:36.873 5908== by 0x1B9209A0: start_thread (in /lib/libpthread-2.3.4.so) ==2005-04-30 16:45:36.873 5908== by 0x1B9DD9E9: clone (in /lib/libc-2.3.4.so) poster 129000000 waiter 129000000 ------ poster 49000000 waiter 49000000 ==2005-04-30 20:39:12.607 16319== Thread 3: ==2005-04-30 20:39:12.608 16319== Syscall param futex(futex) points to unaddressable byte(s) ==2005-04-30 20:39:12.608 16319== at 0x1B9244A2: sem_post@@GLIBC_2.1 (in /lib/libpthread-2.3.4.so) ==2005-04-30 20:39:12.608 16319== by 0x1B9209A0: start_thread (in /lib/libpthread-2.3.4.so) ==2005-04-30 20:39:12.608 16319== by 0x1B9DD9E9: clone (in /lib/libc-2.3.4.so) ==2005-04-30 20:39:12.608 16319== Address 0x1C33DB18 is 0 bytes inside a block of size 16 free'd ==2005-04-30 20:39:12.608 16319== at 0x1B902B5C: free (vg_replace_malloc.c:152) ==2005-04-30 20:39:12.608 16319== by 0x80486E5: waiter (semtest.c:38) ==2005-04-30 20:39:12.608 16319== by 0x1B9209A0: start_thread (in /lib/libpthread-2.3.4.so) ==2005-04-30 20:39:12.608 16319== by 0x1B9DD9E9: clone (in /lib/libc-2.3.4.so) poster 49500000 waiter 49500000 ------ This one is my friend's. poster 82000000 waiter 82000000 ==30665== Thread 3: ==30665== Syscall param futex(futex) points to unaddressable byte(s) ==30665== at 0x1B921812: sem_post@@GLIBC_2.1 (sem_post.S:52) ==30665== by 0x1B91DA40: start_thread (pthread_create.c:269) ==30665== by 0x1B9DD739: clone (clone.S:102) ==30665== Address 0x1CD05628 is 0 bytes inside a block of size 16 free'd ==30665== at 0x1B9048AC: free (vg_replace_malloc.c:152) ==30665== by 0x8048705: waiter (semtest.c:41) ==30665== by 0x1B91DA40: start_thread (pthread_create.c:269) ==30665== by 0x1B9DD739: clone (clone.S:102) poster 82500000 waiter 82500000