Re: Fix to comm buffer leak for upstream-going messages

Joel Welling <[email protected]> Tue, 09 Nov 2004 02:53:40 -0500
Newsgroups gmane.comp.graphics.chromium.devel
Message-ID <[email protected]>
[email protected] said:
> [email protected] said:
> The above change to the pack SPU causes an assertion failure for me.
> If you compile chromium with RELEASE=0 and test with crdemo.conf and
> TCP/IP you'll see it.
> If I find time later, I'll try to narrow down the cause.
> -Brian 

[email protected] said:
> OK, the conflict is happening because teac.c was written before the
> days of  BufferPool stuff and was never updated.  I'm trying to figure
> out how they  work now...
> -Joel 

I take it back- as far as I can tell Teac should be able to work just fine 
without the use of BufferPools.  There doesn't seem to be any particular 
requirement that every network interface manage buffers in this particular way.

However, Brian's assertion failure is certainly real.  It apparently happens 
because a tcpip buffer gets freed twice with crBufferPoolPush().  This is 
presumably happening because the code at tcpip.c:1015 frees pretty much all 
messages, unlike the code in crNetDefaultRecv or in crTeacRecv.  Is the 
convention supposed to be that each network interface's Recv function should 
call crNetFree on the buffer after calling crNetDispatch?  If that's the case, 
why doesn't crNetDispatch just do it, since the function of the message types 
isn't supposed to depend on the network type over which they are sent?

-Joel





-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click