Valgrind - exact leak location.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi People,

I have been trying to run valgrind to detect leaks in
my backend C++ algorithm.

The algorithm is created as a shared library object, I
have writtten a small program testAlgo.cpp as an
interface to this algorithm and I am running valgring
on this program using 

make runval <filename>

where runval is defined as 

--------------------------------------
runval:	testAlgo
	$(ENVIRON) $(MOREPATHS) valgrind --leak-check=full
--error-limit=no --show-reachable=no ./testAlgo $(FN)
--------------------------------------

here is a snapshot of an 'invalid read' error thrown
by Valgrind.

------------------------------------------------
==9984==
==9984== Invalid read of size 4
==9984==    at 0x1BA53642:
std::__default_alloc_template<true,
0>::allocate(unsigned) (in
/usr/lib/libstdc++.so.5.0.7)
==9984==    by 0x1B93F74A: int* std::vector<int,
std::allocator<int>
>::_M_allocate_and_copy<__gnu_cxx::__normal_iterator<int
const*, std::vector<int, std::allocator<int> > >
>(unsigned, __gnu_cxx::__normal_iterator<int const*,
std::vector<int, std::allocator<int> > >,
__gnu_cxx::__normal_iterator<int const*,
std::vector<int, std::allocator<int> > >) (in
/home/abc/xyz/rep/pkg/chem/moldata/2.4/lib/libmoldata.so)
==9984==    by 0x1B93F337: std::vector<int,
std::allocator<int> >::operator=(std::vector<int,
std::allocator<int> > const&) (in
/home/abc/xyz/rep/pkg/chem/moldata/2.4/lib/libmoldata.so)
==9984==    by 0x1B97AB4E: ABCParser::parseString()
(stl_vector.h:501)
==9984==    by 0x1B975D34: ABCParser::execute()
(ABCParser.cpp:101)
==9984==    by 0x80499A9: main (testAlgo.cpp:31)
==9984==  Address 0x7 is not stack'd, malloc'd or
(recently) free'd
----------------------------------------------------

the rogue operation is being performed inside
ABCParser::parseString()  however this is a very big
function and I am unable to painstakingly go thru it
to find out the possible source of leak.

Is there a way out? Can valgrind give me the exact
line number in a file where the "invalid read"
occured?

I read somewhere that compiling using the '-g' option
would do this, however I am not compiling a single
program.The algorithm has many dependencies and so I
am using the Makefile for compilation.

As a result valgrind is reporting an index in the
shared library object file that has been created, as
the location of the error.


How can I make valgrind point out the exact location
of the error in my code?

Any directions would be very helpful.
Regards
vatsan.

"MAN'S EGO IS THE FOUNTAINHEAD OF HUMAN PROGRESS"
                                          Ayn Rand.

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux