<div dir="ltr">hi,<br><br>In the linux Gtk port, with Webkit revision 33493, i see that the resource handles (curl backend) never get released after completing the data transfer for that request. This results in big leaks in resourcehandles as well as the curl internal data structures. (~800k on opening <a href="http://nytimes.com">nytimes.com</a> and closing the connection)<br>
<br>The reason is that the ResourceHandle ref count never drops to 0, resouce loaders drop their refcount correctly, but the ref done by the Resource handle onitself&nbsp; (source below) before handing over to the resourcehandle manager is not matched with a deref.<br>
<br>ResourceHandleCurl.cpp:<br>bool ResourceHandle::start(Frame* frame)<br>{<br>&nbsp;&nbsp;&nbsp; ASSERT(frame);<br>&nbsp;&nbsp;&nbsp; ref();&nbsp; <br>&nbsp;&nbsp;&nbsp; ResourceHandleManager::sharedInstance()-&gt;add(this);<br>&nbsp;&nbsp;&nbsp; return true;<br>}<br><br>The fix that works is to deref in the ResourceHandleManager::removeFromCurl however we do not know the impact. Brief look at the latest code doesnt seem to have changed this much, however i can still verify on it.<br>
<br>BTW why does handing resourcehnadle to resourcehandlemanager need to be protected, i guess a weak pointer would do. Also i dont see this done in other ports + gtk/soup though the interfaces are different.<br><br>thanks in advance for any inputs. <br>
<br>regards,<br>Zaheer<br><br><br></div>