Hi,


I am trying out a sample program that has two issues
1. A memory leak
2. A free memory access

Following is my source code
#include <stdio.h>

int main()
{
    int *p = malloc(sizeof(int));
    p = malloc(sizeof(int));
    free(p);
    *p = 5;
    return 0;
}

I have compiled this code with the arm linux cross compiler (ofcourse with -g). 
When I executed this with valgrind I got the following output

For the invalid memory access it shows the faulting point, however it does not 
show the location where the memory was freed. Similarly, while indicating the 
memory leak, it does not show the point of allocation. It just shows the heap 
address that was lost. Can you tell me why valgrind is not able to trace the 
points of allocation and de-allocation of memory? It doesn't seem to be an 
issue with debug symbols, as its able to point out invalid memory access 
correctly. I would appreciate any help on this.

valgrind --tool=memcheck --leak-check=yes --show-reachable=yes 
--track-origins=yes --num-callers=20 ./a.out
==1563== Memcheck, a memory error detector
==1563== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==1563== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==1563== Command: ./a.out
==1563==
==1563== Conditional jump or move depends on uninitialised value(s)
==1563==    at 0x4016514: index (in /lib/ld-2.9.so)
==1563==  Uninitialised value was created by a stack allocation
==1563==    at 0x40020E0: dl_main (in /lib/ld-2.9.so)
==1563==
==1563== Invalid write of size 4
==1563==    at 0x83F0: main (sample.c:8)
==1563==  Address 0x4973060 is 0 bytes inside a block of size 4 free'd
==1563==    at 0x4832B68: free (in 
/usr/lib/valgrind/vgpreload_memcheck-arm-linux.so)
==1563==
==1563==
==1563== HEAP SUMMARY:
==1563==     in use at exit: 4 bytes in 1 blocks
==1563==   total heap usage: 2 allocs, 1 frees, 8 bytes allocated
==1563==
==1563== 4 bytes in 1 blocks are definitely lost in loss record 1 of 1
==1563==    at 0x48332D0: malloc (in 
/usr/lib/valgrind/vgpreload_memcheck-arm-linux.so)
==1563==
==1563== LEAK SUMMARY:
==1563==    definitely lost: 4 bytes in 1 blocks
==1563==    indirectly lost: 0 bytes in 0 blocks
==1563==      possibly lost: 0 bytes in 0 blocks
==1563==    still reachable: 0 bytes in 0 blocks
==1563==         suppressed: 0 bytes in 0 blocks
==1563==
==1563== For counts of detected and suppressed errors, rerun with: -v
==1563== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 13 from 5)

Regards,
- Vijay
------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to