Debugging Dynamic Memory Usage Errors Using HP WDB v6.3 (5900-2181, August 2012)

Example 19 Detecting a double free error
Sample Program
$ cat double-free.c
#include<stdio.h>
1
2 int main()
3 {
4
5 printf("Starting program\n");
6 char* han = (char*)malloc(sizeof(char));
7 free(han);
8 printf("Now freeing a pointer twice...\n");
9 free(han);
10 }
Sample Debugging Session
(gdb) set heap-check free on
(gdb) file double-free
Reading symbols from double-free...done.
(gdb) b main
Breakpoint 1 at 0x2be4: file double-free.c,
line 5 from double-free.
(gdb) r
Starting program: /double-free
Breakpoint 1, main () at double-free.c:5
5 printf("Starting program\n");
(gdb) n
Starting program
6 char* han = (char*)malloc(sizeof(char));
(gdb)
7 free(han);
(gdb)
8 printf("Now freeing a pointer twice...\n");
(gdb)
Now freeing a pointer twice...
9 free(han);
(gdb)
warning: Attempt to free unallocated or already freed
object at 0x4042c3e0
0x70e78d7c in __rtc_event+0 ()
from /opt/langtools/lib/librtc.sl
76