Hi everybody, 

I'm new to Valgrind and have some questions about architecture flags. Running 
the Valgrind memchecker provided by Yocto on an ARMv7 CortexA9 (iMX6) I see the 
stack trace, except for memory leaks. So I decide to build Valgrind by my own, 
and everything was right.

Actually, I don't have enough knowledge to understand all the tricks about 
compiler flags for ARM, but I suppose something is conflicting with this 
additional Yocto patch
http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/recipes-devtools/valgrind/valgrind/remove-arm-variant-specific.patch


Can anyone check if this patch is ok for Valgrind or give me some hints ?

Here is my test, just for the log
 
Source code

  #include <stdlib.h>

  void f(void) 
  { 
     int* x = malloc(10 * sizeof(int)); 
     x[10] = 0;        // problem 1: heap block overrun 
  }                    // problem 2: memory leak -- x not freed 

  int main(void) 
  { 
     f(); 
     return 0; 
  } 

Running Yocto provided Valgrind

  valgrind --leak-check=full --keep-stacktraces=alloc-and-free --num-callers=20 
--track-origins=yes --leak-resolution=high ./memcheck-example 

leads to 

        ==3510== Memcheck, a memory error detector 
        ==3510== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et 
al. 
        ==3510== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright 
info 
        ==3510== Command: ./memcheck-example 
        ==3510== 
        ==3510== Invalid write of size 4 
        ==3510==    at 0x8454: f (memcheck-example.c:6) 
        ==3510==    by 0x846B: main (memcheck-example.c:11) 
        ==3510==  Address 0x497b050 is 0 bytes after a block of size 40 alloc'd 
        ==3510==    at 0x48377C4: malloc (in 
/usr/lib/valgrind/vgpreload_memcheck-arm-linux.so) 
        ==3510== 
        ==3510== 
        ==3510== HEAP SUMMARY: 
        ==3510==     in use at exit: 40 bytes in 1 blocks 
        ==3510==   total heap usage: 1 allocs, 0 frees, 40 bytes allocated 
        ==3510== 
        ==3510== 40 bytes in 1 blocks are definitely lost in loss record 1 of 1 
        ==3510==    at 0x48377C4: malloc (in 
/usr/lib/valgrind/vgpreload_memcheck-arm-linux.so) 
        ==3510== 
        ==3510== LEAK SUMMARY: 
        ==3510==    definitely lost: 40 bytes in 1 blocks 
        ==3510==    indirectly lost: 0 bytes in 0 blocks 
        ==3510==      possibly lost: 0 bytes in 0 blocks 
        ==3510==    still reachable: 0 bytes in 0 blocks 
        ==3510==         suppressed: 0 bytes in 0 blocks 

so without stack trace for mem leak 

Regards
David


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to