view valgrind-suppressions @ 24065:85bed17fe5c1

The variable we use to keep track of the watcher of the ssl connection should be unsigned. This isn't really a problem in Pidgin, where we use glib's mainloop and GIOChannels because glib starts assigning the handle IDs sequentially starting from 1. But if an eventloop implementation ever returns a handle ID greater than the largest possible signed integer (2,147,483,647) then we won't be able to remove the watcher because purple_ssl_close() in sslconn.c only removes it if inpa > 0, and since it interprets inpa as a signed value then handles over 2,147,483,647 appear as negative numbers. I stumbled upon this when playing around with libevent, which can use epoll. My implementation generated a random handle ID which was sometimes greater than 2,147,483,647. I don't believe this breaks binary compatibility. And I don't think it breaks source compatibility, but I guess it might depend on what compiler you're using.
author Mark Doliner <mark@kingant.net>
date Thu, 04 Sep 2008 18:04:29 +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
}