Debugging Dynamic Memory Usage Errors Using NonStop Native Inspect White Paper
(eInspect 1,1180): n
* 9 printf("Now freeing a pointer twice...\n");
(eInspect 1,1180): n
* 10 free(han);
(eInspect 1,1180): n
warning: Attempt to free unallocated or already freed object at 0x0842ad10
__rtc_event (ecode=RTC_BAD_FREE, pointer=0x842ad10, pclist=0x0, size=0)
at c:\t1237\h0616\wdb\build\ia64-hp-nsk-native\
gdb\../../../Src/gnu/gdb\infrtc.c:1901
c:\t1237\h0616\wdb\build\ia64-hp-nsk-native\
gdb\../../../Src/gnu/gdb\infrtc.c:1901: Guardian or User Defined
Error 13
Example 7 Detecting de-allocation of memory that has not been initialized
Sample Program
1 #include <stdio.h>
2
3 int main() {
4 char* han = "HI";
5 printf("Starting program\n");
6
7 free(han);
8 }
Sample Debugging Session
(eInspect 1,700): set heap-check on
(eInspect 1,700): n
* 5 printf("Starting program\n");
(eInspect 1,700): n
* 7 free(han);
(eInspect 1,700): n
warning: Attempt to free unallocated or already freed object at 0x080001a0
__rtc_event (ecode=RTC_BAD_FREE, pointer=0x80001a0, pclist=0x0, size=0)
at c:\t1237\h0616\wdb\build\ia64-hp-nsk-native\
gdb\../../../Src/gnu/gdb\infrtc.c:1901
c:\t1237\h0616\wdb\build\ia64-hp-nsk-native\
gdb\../../../Src/gnu/gdb\infrtc.c:1901: Guardian or User Defined
Error 13
Example 8 Detecting de-allocation of unallocated blocks
Sample Program
1 #include <stdio.h>
2
3 int main() {
4 int *han;
5 printf("Starting program\n");
6 han = (int*)malloc(sizeof(int));
7 han++;
8 free(han);
9 }
Sample Debugging Session
(eInspect 1,677): set heap-check on
(eInspect 1,677): n
* 6 han = (int*)malloc(sizeof(int));
(eInspect 1,677): n
* 7 han++;
(eInspect 1,677): n
* 8 free(han);
20










