[Pidgin] #2036: msimprpl sometimes crashes in purple_debug_vargs on Windows
Pidgin
trac at pidgin.im
Thu Jul 5 02:03:36 EDT 2007
#2036: msimprpl sometimes crashes in purple_debug_vargs on Windows
-----------------------+----------------------------------------------------
Reporter: jeff | Owner: jeff
Type: defect | Status: new
Priority: minor | Milestone:
Component: libpurple | Version: 2.0.2
Keywords: msimprpl | Pending: 0
-----------------------+----------------------------------------------------
Check to make sure that nothing invalid is passed to purple_debug_info().
{{{
pidgin.exe caused an Access Violation at location 77c478c0 in module
msvcrt.dll Reading from location 00000000.
Registers:
eax=00000000 ebx=00000000 ecx=00000000 edx=00000006 esi=00000002
edi=00000000
eip=77c478c0 esp=0022f02c ebp=0022f3a8 iopl=0 nv up ei pl zr na po
nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
efl=00200246
Call stack:
77C478C0 msvcrt.dll:77C478C0 strlen
6730D487 libglib-2.0-0.dll:6730D487 g_win32_locale_filename_from_utf8
67304B24 libglib-2.0-0.dll:67304B24 g_vasprintf
672F4AD6 libglib-2.0-0.dll:672F4AD6 g_strdup_vprintf
67CD928F libpurple.dll:67CD928F purple_debug_vargs debug.c:60
static void purple_debug_vargs(
PurpleDebugLevel level = ,
const char * category = &'n',
const char * format = &'s',
va_list args = "°4¿"
)
...
return;
> arg_s = g_strdup_vprintf(format, args);
if (debug_enabled) {
...
67CD9474 libpurple.dll:67CD9474 purple_debug_info debug.c:121
void purple_debug_info(
const char * category = &'n',
const char * format = &'s'
)
...
purple_debug_vargs(PURPLE_DEBUG_INFO, category, format, args);
va_end(args);
> }
void
...
6C7822B3 libnull.dll:6C7822B3 nullprpl_set_status nullprpl.c:541
static void nullprpl_set_status(
PurpleAccount * acct = &(indirect),
PurpleStatus * status = &(indirect)
)
...
acct->username,
purple_status_get_name(status), msg);
> foreach_nullprpl_gc(report_status_change,
get_nullprpl_gc(acct->username),
NULL);
}
...
67CF01D5 libpurple.dll:67CF01D5 purple_prpl_change_account_status
prpl.c:240
void purple_prpl_change_account_status(
PurpleAccount * account = &{
char * username = 0x00bf34b0,
char * alias = 0x00000000,
char * password = 0x00000000,
char * user_info = 0x00000000,
char * buddy_icon_path = 0x00000000,
gboolean remember_pass = 0,
char * protocol_id = 0x00bf35d8,
PurpleConnection * gc = 0x01dd7e20,
gboolean disconnecting = 0,
GHashTable * settings = 0x00bd3bc0,
GHashTable * ui_settings = 0x00bd3be0,
PurpleProxyInfo * proxy_info = 0x00000000,
GSList * permit = 0x00000000,
GSList * deny = 0x00000000,
int perm_deny = 1,
GList * status_types = 0x00bde670,
PurplePresence * presence = 0x00bf2ee8,
PurpleLog * system_log = 0x00000000,
void * ui_data = 0x00000000
},
PurpleStatus * old_status = &(indirect),
PurpleStatus * new_status = &(indirect)
)
...
if (!purple_account_is_disconnected(account) &&
prpl_info->set_status != NULL)
{
> prpl_info->set_status(account, new_status);
}
}
...
67CF9CDA libpurple.dll:67CF9CDA purple_status_set_active_with_attrs_list
status.c:651
void purple_status_set_active_with_attrs_list(
PurpleStatus * status = &(indirect),
gboolean active = 1,
const GList * attrs = &(indirect)
)
...
if (purple_account_get_enabled(account, purple_core_get_ui()))
> purple_prpl_change_account_status(account, old_status,
new_status);
if (ops != NULL && ops->status_changed != NULL)
...
67CC3EE0 libpurple.dll:67CC3EE0 purple_account_set_status_list
account.c:1491
void purple_account_set_status_list(
PurpleAccount * account = &(indirect),
const char * status_id = &'o',
gboolean active = 1,
GList * attrs = &(indirect)
)
...
*/
schedule_accounts_save();
> }
void
...
67CC3FFA libpurple.dll:67CC3FFA purple_account_set_status
account.c:1460
void purple_account_set_status(
PurpleAccount * account = &(indirect),
const char * status_id = &'o',
gboolean active = 1
)
...
}
purple_account_set_status_list(account, status_id, active, attrs);
> g_list_free(attrs);
va_end(args);
}
...
67CF468B libpurple.dll:67CF468B purple_savedstatus_activate_for_account
savedstatuses.c:1134
void purple_savedstatus_activate_for_account(
const PurpleSavedStatus * saved_status = &(indirect),
PurpleAccount * account = &{
char * username = 0x00bf34b0,
char * alias = 0x00000000,
char * password = 0x00000000,
char * user_info = 0x00000000,
char * buddy_icon_path = 0x00000000,
gboolean remember_pass = 0,
char * protocol_id = 0x00bf35d8,
PurpleConnection * gc = 0x01dd7e20,
gboolean disconnecting = 0,
GHashTable * settings = 0x00bd3bc0,
GHashTable * ui_settings = 0x00bd3be0,
PurpleProxyInfo * proxy_info = 0x00000000,
GSList * permit = 0x00000000,
GSList * deny = 0x00000000,
int perm_deny = 1,
GList * status_types = 0x00bde670,
PurplePresence * presence = 0x00bf2ee8,
PurpleLog * system_log = 0x00000000,
void * ui_data = 0x00000000
}
)
...
TRUE, NULL);
}
> }
void *
...
67CF48E1 libpurple.dll:67CF48E1 purple_savedstatus_activate
savedstatuses.c:1081
void purple_savedstatus_activate(
PurpleSavedStatus * saved_status = &(indirect)
)
...
accounts = purple_accounts_get_all_active();
> for (node = accounts; node != NULL; node = node->next)
{
PurpleAccount *account;
...
64AA9D2E pidgin.dll:64AA9D2E activate_currently_selected_status
gtkstatusbox.c:2318
static void activate_currently_selected_status(
PidginStatusBox * status_box = &{
GtkContainer parent_instance = (indirect),
GtkListStore * store = 0x00c73d00,
GtkListStore * dropdown_store = 0x00c73d40,
PurpleAccount * account = 0x00000000,
PurpleAccount * token_status_account = 0x00000000,
GtkWidget * vbox = 0x00bd56f8,
GtkWidget * sw = 0x01cdb960,
GtkWidget * imhtml = 0x01cf5008,
PurpleStoredImage * buddy_icon_img = 0x00000000,
GdkPixbuf * buddy_icon = 0x01ce6e38,
GdkPixbuf * buddy_icon_hover = 0x01ce6e00,
GtkWidget * buddy_icon_sel = 0x00000000,
GtkWidget * icon = 0x01cdbb00,
GtkWidget * icon_box = 0x00bd57e8,
GtkWidget * icon_box_menu = 0x00000000,
GdkCursor * hand_cursor = 0x01da7ea8,
GdkCursor * arrow_cursor = 0x01d96bc0,
int icon_size = 32,
gboolean icon_opaque = 0,
gboolean imhtml_visible = 0,
GtkWidget * cell_view = 0x00c71df8,
GtkCellRenderer * icon_rend = 0x00c71f78,
GtkCellRenderer * text_rend = 0x01cdf310,
GdkPixbuf * error_pixbuf = 0x00000000,
int connecting_index = 6,
GdkPixbuf *uint32[] connecting_pixbufs = (array),
int typing_index = 0,
GdkPixbuf *uint32[] typing_pixbufs = (array),
gboolean network_available = 1,
gboolean connecting = 1,
guint typing = 0,
GtkTreeIter iter = (indirect),
char * error = 0x00000000,
GtkWidget * hbox = 0x00bd55b8,
GtkWidget * toggle_button = 0x00c703e0,
GtkWidget * vsep = 0x00c73cc0,
GtkWidget * arrow = 0x00bd5608,
GtkWidget * popup_window = 0x00c06758,
GtkWidget * popup_frame = 0x01cdb890,
GtkWidget * scrolled_window = 0x00c71f18,
GtkWidget * cell_view_frame = 0x00000000,
GtkTreeViewColumn * column = 0x00c0b158,
GtkWidget * tree_view = 0x01ce41d8,
gboolean popup_in_progress = 0,
GtkTreeRowReference * active_row = 0x01d92a58
}
)
...
}
> g_free(title);
g_free(message);
}
...
64AAA5A7 pidgin.dll:64AAA5A7 remove_typing_cb gtkstatusbox.c:2381
static void remove_typing_cb(
PidginStatusBox * status_box = &{
GtkContainer parent_instance = (indirect),
GtkListStore * store = 0x00c73d00,
GtkListStore * dropdown_store = 0x00c73d40,
PurpleAccount * account = 0x00000000,
PurpleAccount * token_status_account = 0x00000000,
GtkWidget * vbox = 0x00bd56f8,
GtkWidget * sw = 0x01cdb960,
GtkWidget * imhtml = 0x01cf5008,
PurpleStoredImage * buddy_icon_img = 0x00000000,
GdkPixbuf * buddy_icon = 0x01ce6e38,
GdkPixbuf * buddy_icon_hover = 0x01ce6e00,
GtkWidget * buddy_icon_sel = 0x00000000,
GtkWidget * icon = 0x01cdbb00,
GtkWidget * icon_box = 0x00bd57e8,
GtkWidget * icon_box_menu = 0x00000000,
GdkCursor * hand_cursor = 0x01da7ea8,
GdkCursor * arrow_cursor = 0x01d96bc0,
int icon_size = 32,
gboolean icon_opaque = 0,
gboolean imhtml_visible = 0,
GtkWidget * cell_view = 0x00c71df8,
GtkCellRenderer * icon_rend = 0x00c71f78,
GtkCellRenderer * text_rend = 0x01cdf310,
GdkPixbuf * error_pixbuf = 0x00000000,
int connecting_index = 6,
GdkPixbuf *uint32[] connecting_pixbufs = (array),
int typing_index = 0,
GdkPixbuf *uint32[] typing_pixbufs = (array),
gboolean network_available = 1,
gboolean connecting = 1,
guint typing = 0,
GtkTreeIter iter = (indirect),
char * error = 0x00000000,
GtkWidget * hbox = 0x00bd55b8,
GtkWidget * toggle_button = 0x00c703e0,
GtkWidget * vsep = 0x00c73cc0,
GtkWidget * arrow = 0x00bd5608,
GtkWidget * popup_window = 0x00c06758,
GtkWidget * popup_frame = 0x01cdb890,
GtkWidget * scrolled_window = 0x00c71f18,
GtkWidget * cell_view_frame = 0x00000000,
GtkTreeViewColumn * column = 0x00c0b158,
GtkWidget * tree_view = 0x01ce41d8,
gboolean popup_in_progress = 0,
GtkTreeRowReference * active_row = 0x01d92a58
}
)
...
activate_currently_selected_status(status_box);
> pidgin_status_box_refresh(status_box);
}
...
672E0C46 libglib-2.0-0.dll:672E0C46 g_main_context_is_owner
672DEA27 libglib-2.0-0.dll:672DEA27 g_main_context_dispatch
672DFEFB libglib-2.0-0.dll:672DFEFB g_main_context_acquire
672E00DA libglib-2.0-0.dll:672E00DA g_main_loop_run
60575D4E libgtk-win32-2.0-0.dll:60575D4E gtk_main
64A87C0C pidgin.dll:64A87C0C pidgin_main gtkmain.c:849
int pidgin_main(
HINSTANCE hint = &{
int i = 9460301
},
int argc = 2,
char * * argv = &0x003d37a5
)
...
#ifdef _WIN32
> winpidgin_cleanup();
#endif
...
00401CD8 pidgin.exe:00401CD8 WinMain winpidgin.c:614
int WinMain(
struct HINSTANCE__ * hInstance = &{
int i = 9460301
},
struct HINSTANCE__ * hPrevInstance = &{
int i =
},
char * lpszCmdLine = "-d",
int nCmdShow = 10
)
...
}
> return pidgin_main(hInstance, __argc, __argv);
}
...
004022DA pidgin.exe:004022DA WinMain winpidgin.c:240
int WinMain(
struct HINSTANCE__ * hInstance = &{
int i =
},
struct HINSTANCE__ * hPrevInstance = &{
int i = 4011941
},
char * lpszCmdLine = "list: Display a list of chat rooms on the
network. <i>Warning, some servers may disconnect you upon doing
this.</i>",
int nCmdShow = 4214784
)
...
sizeof(DWORD)
) != ERROR_SUCCESS)
> printf("Error writing SafeDllSearchMode. Error: %u\n",
(UINT) GetLastError());
RegCloseKey(hkey);
...
00401247 pidgin.exe:00401247
004012B8 pidgin.exe:004012B8
7C816FD7 kernel32.dll:7C816FD7 RegisterWaitForInputIdle
}}}
--
Ticket URL: <http://developer.pidgin.im/ticket/2036>
Pidgin <http://pidgin.im>
Pidgin
More information about the Tracker
mailing list