|
From: Ross B. <ro...@bi...> - 2009-02-06 19:12:42
|
On Fri, 2009-02-06 at 19:01 +0000, Tom Hughes wrote: > Ross Boylan wrote: > > On Fri, 2009-02-06 at 19:47 +0100, Julian Seward wrote: > >>> invalid read. However, there is no indication of why it is invalid. > >> Um, it says it is invalid because you are reading freed memory: > > I believe those are 2 separate error reports. The addresses are > > different, and the indentation seems to indicate they are distinct > > items. Am I misreading? > > Yes - there is an instruction at address 0x40904A which is reading > memory at address 0x5588760 that was previously freed. > > Tom Thank you. So is the correct reading that the first block gives the stack trace of the call that triggered the error, and the second block gives the stack trace of the earlier code (whose execution is now complete) that freed the memory? Ross > > >>> ==27712== Invalid read of size 8 > >>> ==27712== at 0x40904A: std::valarray<int>::size() const > >>> (valarray:772) > >> [...] > >>> ==27712== Address 0x5588760 is 0 bytes inside a block of size 104 > >>> free'd > >>> ==27712== at 0x4A1B17F: operator delete(void*) > >>> (vg_replace_malloc.c:244) > >>> ==27712== by 0x4968F1: data() (Data_test.cc:123) > >>> ==27712== by 0x43903E: boost::unit_test::ut_detail::unused > >>> boost::unit_test::ut_detail::invoker<boost::unit_test::ut_detail::unused>:: > >>> invoke<void (*)()>(void (*)()&) (callback.hpp:56) > >> [...] > >> > >> J > > |