Mercurial > pidgin
view 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 | 88d626a179a6 |
children | 1260354ed92d |
line wrap: on
line source
EXTRA_DIST = \ COPYRIGHT \ ChangeLog.API \ ChangeLog.win32 \ Doxyfile.in \ HACKING \ Makefile.mingw \ PLUGIN_HOWTO \ PROGRAMMING_NOTES \ README.SVN \ README.dbus \ README.mingw \ config.h.mingw \ gaim.pc.in \ gaim-uninstalled.pc.in \ gaim.service.in \ intltool-extract.in \ intltool-merge.in \ intltool-update.in \ pidgin.apspec.in \ pidgin.spec.in \ pidgin.desktop.in \ po/Makefile.mingw noinst_HEADERS = config.h if ENABLE_DBUS dbus_servicedir=$(DBUS_SERVICES_DIR) dbus_service_DATA=gaim.service endif dist-hook: pidgin.spec cp pidgin.spec $(distdir) rm $(distdir)/config.h distcheck-hook: libpurple/plugins/perl/common/Purple.pm pidgin/plugins/perl/common/GtkUI.pm # cp libpurple/plugins/perl/common/Gaim.pm $(distdir)/libpurple/plugins/perl/common appsdir = $(datadir)/applications apps_in_files = pidgin.desktop.in apps_DATA = $(apps_in_files:.desktop.in=.desktop) @INTLTOOL_DESKTOP_RULE@ if ENABLE_GTK GTK_DIR=pidgin endif if ENABLE_GNT GNT_DIR=finch endif SUBDIRS = libpurple doc $(GNT_DIR) $(GTK_DIR) m4macros po docs: Doxyfile if HAVE_DOXYGEN @echo "Running doxygen..." @doxygen else @echo "doxygen was not found during configure. Aborting." @echo; endif # perl's MakeMaker uninstall foo doesn't work well with DESTDIR set, which # breaks "make distcheck" unless we ignore perl things distuninstallcheck_listfiles = \ find . -type f -print | grep -v perl | grep -v Purple.3pm DISTCLEANFILES= pidgin.desktop libpurple/gconf/purple.schemas intltool-extract \ intltool-merge intltool-update ACLOCAL_AMFLAGS = -I m4