Mercurial > pidgin.yaz
view finch/Makefile.am @ 15976:a6a79b8616bf
I commonly see a crash in which socket_ready_cb(), shortly after a laptop wakes from sleep, is passed invalid (previously freed) connect_data. It looks like this:
Thread 0 Crashed:
0 libobjc.A.dylib 0x90a59380 objc_msgSend 16
1 Libgaim 0x0fe23bcd gaim_proxy_connect_data_disconnect 172
2 Libgaim 0x0fe23d63 socket_ready_cb 199
3 com.apple.CoreFoundation 0x90843ffd __CFSocketDoCallback 551
(objc_msgSend is how ObjC routes messages... it's being called because connect_data->cconnect_cb is invalid).
It appears that when this crash happens, the socket is marked as ready just before the computer sleeps; on the next run loop, the callback will be called [socket_ready_cb()]. The computer sleeps and every account is disconnected first, which calls gaim_proxy_connect_cancel_with_handle(), destroying the connect_data. When it awakens, it calls socket_ready_cb() and the crash occurs.
I've added PURPLE_PROXY_CONNECT_DATA_IS_VALID, which takes advantage of the fact that all valid connect_data objects are stored in the handles GSList, just as PURPLE_GAIM_CONNECTION_IS_VALID works.
author | Evan Schoenberg <evan.s@dreskin.net> |
---|---|
date | Sun, 01 Apr 2007 02:17:06 +0000 |
parents | c6e563dfaa7a |
children | 5b2b0fbace45 |
line wrap: on
line source
if ENABLE_GNT EXTRA_DIST = \ getopt.c \ getopt.h \ getopt1.c SUBDIRS = libgnt plugins bin_PROGRAMS = finch finch_SOURCES = \ gntaccount.c \ gntblist.c \ gntconn.c \ gntconv.c \ gntdebug.c \ gntft.c \ finch.c \ gntidle.c \ gntnotify.c \ gntplugin.c \ gntpounce.c \ gntprefs.c \ gntrequest.c \ gntstatus.c \ gntui.c finch_headers = \ gntaccount.h \ gntblist.h \ gntconn.h \ gntconv.h \ gntdebug.h \ gntft.h \ finch.h \ gntidle.h \ gntnotify.h \ gntplugin.h \ gntpounce.h \ gntprefs.h \ gntrequest.h \ gntstatus.h \ gntui.h finchincludedir=$(includedir)/finch finchinclude_HEADERS = \ $(finch_headers) finch_DEPENDENCIES = @LIBOBJS@ finch_LDFLAGS = -export-dynamic finch_LDADD = \ @LIBOBJS@ \ $(DBUS_LIBS) \ $(INTLLIBS) \ $(GLIB_LIBS) \ $(LIBXML_LIBS) \ $(GNT_LIBS) \ ./libgnt/libgnt.la \ $(top_builddir)/libpurple/libpurple.la AM_CPPFLAGS = \ -DSTANDALONE \ -DBR_PTHREADS=0 \ -DDATADIR=\"$(datadir)\" \ -DLIBDIR=\"$(libdir)/finch/\" \ -DLOCALEDIR=\"$(datadir)/locale\" \ -DSYSCONFDIR=\"$(sysconfdir)\" \ -I$(top_srcdir)/libpurple/ \ -I$(top_srcdir) \ -I$(srcdir)/libgnt/ \ $(DEBUG_CFLAGS) \ $(GLIB_CFLAGS) \ $(DBUS_CFLAGS) \ $(LIBXML_CFLAGS) \ $(GNT_CFLAGS) endif