[Adium-devl] Thursday! Thursday! Thursday!

Evan Schoenberg evan at adiumx.com
Wed Jan 17 22:55:16 UTC 2007


On Jan 17, 2007, at 4:10 AM, Elliott Harris wrote:

> I'm dedicating this Thursday, January 18th, 2007, official kill-the-
> upnp-bug-day. I'm going to sit down for a good 9 hours and attempt to
> build debug information and hopefully fix the upnp bug.
Fantastic!  I hope the hunt goes so well that a day of hacking  
resolves other bugs, as well - but even if it doesn't, that's a big  
one which knocks out a lot of folk, and it'll be great to have it  
squelched :)

> I am writing
> this to solicit some company for some, if not all of the day in
> attempting to put our shiny new debug messages to work, and hopefully
> devising a fix for the bug.
I'll be in class 8 AM to 5 PM; I'll try to be around after that :)

> e should be able to troubleshoot some on our own to put
> those debugging messages to work, and may be able to solicit some
> more help from IRC to further our efforts. I think if we sit down and
> put a solid day of work on it, it shouldn't be too bad.
I've added a bit more debug logging to libgaim in util.c. There's a  
crash after a gaim_util_fetch_url_request() process fails which is  
oddly similar to the upnp crash.. and upnp does utilize  
gaim_util_fetch_url_request() .  Our previous thought had been that  
the UPnPMappingAddRemove object (ar) was being released  
prematurely... logging I've gotten from a user doesn't show that,  
though -- the log ends like this:
----
19:10:48: (Libgaim: upnp) done_port_mapping_cb(): Failed HTTP_OK

19:10:48: (Libgaim: upnp) done_port_mapping_cb(success == 0): Calling  
cb for a23ded0
19:10:48: (Libgaim: network) Couldn't create UPnP mapping
<<CRASH>>
----
with no previous logging of "a23ded0", the UPnPMappingAddRemove  
object which was passed to done_port_mapping_cb().  Now, creation of  
UPnPMappingAddRemove objects isn't being logged; that might be worth  
adding, as one possibility which occured to me earlier is that it's  
not the ar being released but rather that somewhere higher up the  
chain -- say, in the utl_fetch_url_request() stuff -- there's a  
release, which leads to a completely invalid pointer being passed to  
done_port_mapping_cb(), one which never was a UPnPMappingAddRemove.

The new logging will therefore show when gaim_util_fetch_url_cancel()  
is called, which is the only way that GaimUtilFetchUrlData objects  
are freed.

I hope that helps get a start on a fresh direction to investigate!

-Evan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20070117/01ee06f3/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20070117/01ee06f3/attachment.sig>


More information about the devel mailing list