Article View: be.comp.programming
Article #1613free() problemen opsporen (lang bericht)
From: Aquila
Date: Mon, 24 Jan 2005 16:27
Date: Mon, 24 Jan 2005 16:27
83 lines
4825 bytes
4825 bytes
Ik zit in een simulator te werken (nsclick) maar ik krijg foutmeldingen in
deze aard:
free(): invalid pointer 0x87382a8!
Ik heb dus valgrind gestart, en addrcheck geeft hetvolgende resultaat na het
afbreken van de uitvoering:
==24538== ERROR SUMMARY: 22 errors from 2 contexts (suppressed: 0 from 0)
==24538==
==24538== 11 errors in context 1 of 2:
==24538== Invalid read of size 4
==24538== at 0x823D551: Click::HashMap<Click::IPAddress,
Click::WaitingPackets>::find_pair(Click::IPAddress const&) const
(ipaddress.hh:189)
==24538== by 0x823C9FD:
Click::AODVWaitingForDiscovery::runTask(Click::IPAddress const&,
Click::AODVWaitingForDiscovery::TimerData*)
(aodv_waitingfordiscovery.cc:82)
==24538== by 0x823CC21:
Click::AODVWaitingForDiscovery::handleTask(Click::Timer*, void*)
(aodv_waitingfordiscovery.cc:115)
==24538== by 0x82101C2: Click::Master::run_timers() (master.cc:380)
==24538== Address 0x3450F474 is 4 bytes inside a block of size 8 free'd
==24538== at 0x34149A52: operator delete(void*) (vg_replace_malloc.c:156)
==24538== by 0x823C936:
Click::AODVWaitingForDiscovery::runTask(Click::IPAddress const&,
Click::AODVWaitingForDiscovery::TimerData*)
(aodv_waitingfordiscovery.cc:69)
==24538== by 0x823CC21:
Click::AODVWaitingForDiscovery::handleTask(Click::Timer*, void*)
(aodv_waitingfordiscovery.cc:115)
==24538== by 0x82101C2: Click::Master::run_timers() (master.cc:380)
==24538==
==24538== 11 errors in context 2 of 2:
==24538== Invalid read of size 4
==24538== at 0x823D5B3: Click::HashMap<Click::IPAddress,
Click::WaitingPackets>::remove(Click::IPAddress const&) (ipaddress.hh:189)
==24538== by 0x823C9EE:
Click::AODVWaitingForDiscovery::runTask(Click::IPAddress const&,
Click::AODVWaitingForDiscovery::TimerData*)
(aodv_waitingfordiscovery.cc:81)
==24538== by 0x823CC21:
Click::AODVWaitingForDiscovery::handleTask(Click::Timer*, void*)
(aodv_waitingfordiscovery.cc:115)
==24538== by 0x82101C2: Click::Master::run_timers() (master.cc:380)
==24538== Address 0x3450F474 is 4 bytes inside a block of size 8 free'd
==24538== at 0x34149A52: operator delete(void*) (vg_replace_malloc.c:156)
==24538== by 0x823C936:
Click::AODVWaitingForDiscovery::runTask(Click::IPAddress const&,
Click::AODVWaitingForDiscovery::TimerData*)
(aodv_waitingfordiscovery.cc:69)
==24538== by 0x823CC21:
Click::AODVWaitingForDiscovery::handleTask(Click::Timer*, void*)
(aodv_waitingfordiscovery.cc:115)
==24538== by 0x82101C2: Click::Master::run_timers() (master.cc:380)
==24538== IN SUMMARY: 22 errors from 2 contexts (suppressed: 0 from 0)
Aan de eerste fout kan ik spijtig genoeg niet veel doen wegens te weinig
tijd, maar dit is Click::AODVWaitingForDiscovery::runTask:
void AODVWaitingForDiscovery::runTask(const IPAddress & destination,
TimerData* data){
Buffer::Pair* pair = buffer.find_pair(destination);
assert(pair);
assert(!pair->value.timer->scheduled());
++pair->value.nrOfRetries;
if (pair->value.maxTTL){
if(pair->value.nrOfRetries == AODV_RREQ_RETRIES){
delete(pair->value.timer);
delete data; // <-- lijn 69
Die TimerData zelf is deze struct:
struct TimerData{
AODVWaitingForDiscovery* waitingForDiscovery;
IPAddress destination;
};
Een ingewikkelde situatie ik besef het: dit zijn data voor de static
callbackfunctie die wordt opgeroepen als de timer afloopt.
Waarom is dit nu fout voor valgrind?
Alle hulp is meer dan welkom...
--
"May the source be with you"
Technical Details
Message-ID:
<M4-dneY0gfSVv2jcRVnyig@scarlet.biz>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!news.maxwell.syr.edu!border1.nntp.dca.giganews.com!nntp.giganews.com!local1.nntp.dca.giganews.com!nntp.scarlet.biz!news.scarlet.biz.POSTED!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: fcea4,4a0ea30ec4c86210,start X-Google-Thread: 107324,4a0ea30ec4c86210,start X-Google-Attributes: gidfcea4,gid107324,public X-Google-Language: ENGLISH,ASCII-7-bit Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!news.maxwell.syr.edu!border1.nntp.dca.giganews.com!nntp.giganews.com!local1.nntp.dca.giganews.com!nntp.scarlet.biz!news.scarlet.biz.POSTED!not-for-mail NNTP-Posting-Date: Mon, 24 Jan 2005 10:27:52 -0600 From: Aquila <braempje@netscape.net> Subject: free() problemen opsporen (lang bericht) Newsgroups: be.comp.programming,nl.comp.programmeren Followup-To: be.comp.programming Date: Mon, 24 Jan 2005 17:27:51 +0100 User-Agent: KNode/0.8.2 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit Message-ID: <M4-dneY0gfSVv2jcRVnyig@scarlet.biz> Lines: 83 NNTP-Posting-Host: 81.11.173.231 X-Trace: sv3-k0SwiwK0UnGCTwGv0dH2KyoPsreNtZOtlWNqdImQkf7MfCp5iLHIPY6dyXQuJzCfsceHxd59Q50fSCQ!VSR+VOi9t+M6QvjFLzNiz/mG/ZR/dv6Eq88qGb2CnjKvNjrEIvgpgysPnIp1Mu2RE8fAXoFxF34= X-Complaints-To: abuse@scarlet.be X-DMCA-Complaints-To: abuse@scarlet.biz X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.22