view valgrind-suppressions @ 31518:b39b6d0008c5

upnp: Asynch-ronize the callbacks from UPnP to calling code. Refs #12387 I have no idea if this will resolve the crashes, but with the help of the packet capture, I /think/ these are correct. Short summary: it's possible for the callback to fire (and ar be freed) before the top-level function (purple_upnp_cancel_port_mapping) returns, even though cancel_port_mapping returns the now-invalid ar (which may lead to a subsequent use-after-free). At least one call path through the code that I think leads to this (backed up by one of the debug logs I looked at): purple_upnp_cancel_port_mapping(...) do_port_mapping_cb (has_control_mapping == TRUE, ar->add == FALSE) purple_upnp_generate_action_message_and_send(..., done_port_mapping_cb, ar) /* We fail to parse the URL (see some debug logs) */ done_port_mapping_cb ar->cb(FALSE, cbdata) return; return; return; return ar; ...and something which calls: do_port_mapping_cb(has_control_mapping == TRUE, ar->add == TRUE) ar->cb(FALSE, cbdata) g_free(ar) return;
author Paul Aurich <paul@darkrain42.org>
date Tue, 28 Dec 2010 05:37:20 +0000
parents a8d6f071eb6d
children
line wrap: on
line source

{
   X oddness 1
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:_XReply
}
{
   NSS
   Memcheck:Cond
   obj:/usr/lib/libsoftokn3.so
   obj:/usr/lib/libsoftokn3.so
   obj:/usr/lib/libsoftokn3.so
   obj:/usr/lib/libsoftokn3.so
}
{
   X oddness 2
   Memcheck:Param
   writev(vector[...])
   fun:writev
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:_X11TransWritev
   fun:_XSend
}
{
   X oddness 3
   Memcheck:Cond
   fun:XcursorImageHash
   fun:XcursorNoticePutBitmap
   fun:_XNoticePutBitmap
   fun:XPutImage
}
{
   X oddness 4
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:XFlush
}
{
   X oddness 5
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:XDrawLine
}
{
   X oddness 6
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:_XEventsQueued
}
{
   File selector
   Memcheck:Value4
   fun:_itoa_word
   fun:_IO_vfprintf_internal
   fun:_IO_vsprintf_internal
   fun:_IO_sprintf
}
{
   File selector 2
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:XRenderComposite
}
{
   TCL leak
   Memcheck:Leak
   fun:malloc
   fun:TclpAlloc
   fun:Tcl_Alloc
   fun:Tcl_StaticPackage
}
{
   FontConfig Maybe
   Memcheck:Leak
   fun:malloc
   fun:FcStrCopy
   fun:FcStrSetAdd
   fun:FcLangSetCopy
}
{
   File selector 3
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:_XFlushGCCache
}
{
   File selector 4
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:XCreateGC
}
{
   Something else
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:_XSetClipRectangles
}
{
   New conversation windows
   Memcheck:Cond
   obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
   obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
   obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
   obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
}
{
   New conversation windows 2
   Memcheck:Cond
   obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
   obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
   obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
   obj:/usr/lib/libgobject-2.0.so.0.400.8
}
{
   NSS Init
   Memcheck:Leak
   fun:malloc
   fun:PR_Malloc
   fun:PR_CreateStack
   fun:_PR_InitFdCache
   fun:_PR_InitIO
   fun:_PR_ImplicitInitialization
   fun:PR_Init
   fun:rsa_nss_init
   fun:GE_plugin_load
   fun:purple_plugin_load
   fun:purple_plugins_load_saved
   fun:main
}