Mercurial > pidgin
view autogen.sh @ 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 | 593534b724b0 |
children | a4d9505bd307 |
line wrap: on
line source
#!/bin/sh CONFIGURE_ARGS="" if [ -f configure.args ] ; then CONFIGURE_ARGS="${CONFIGURE_ARGS} `cat configure.args`" fi (glib-gettextize --version) < /dev/null > /dev/null 2>&1 || { echo; echo "You must have glib-gettextize installed to compile Pidgin."; echo; exit; } (intltoolize --version) < /dev/null > /dev/null 2>&1 || { echo; echo "You must have intltool installed to compile Pidgin."; echo; exit; } (libtoolize --version) < /dev/null > /dev/null 2>&1 || { echo; echo "You must have libtool installed to compile Pidgin."; echo; exit; } (automake --version) < /dev/null > /dev/null 2>&1 || { echo; echo "You must have automake installed to compile Pidgin."; echo; exit; } (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo; echo "You must have autoconf installed to compile Pidgin."; echo; exit; } echo "Generating configuration files for Pidgin, please wait...." echo; echo "Running libtoolize, please ignore non-fatal messages...." echo n | libtoolize --copy --force || exit; # Add other directories to this list if people continue to experience # brokennesses ... Obviously the real answer is for them to fix it # themselves, but for Luke's sake we have this. for dir in "/usr/local/share/aclocal" \ "/opt/gnome-1.4/share/aclocal" do if test -d $dir ; then ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $dir" fi done libtoolize -c -f --automake glib-gettextize --force --copy intltoolize --force --copy aclocal $ACLOCAL_FLAGS || exit; autoheader || exit; automake --add-missing --copy; autoconf || exit; automake || exit; echo; echo "Running ./configure ${CONFIGURE_ARGS} $@" echo; ./configure ${CONFIGURE_ARGS} $@