Strange buddy move behavior. Падение при некоторых перемещениях контакта между группами.

Issue #85 duplicate
Janus Kobain created an issue

Original issue 85 created by plaque_fcc on 2011-11-04T01:03:55.000Z:

(00:55:07) mrim-prpl: Moving 'mrim_move_buddy' to group 'support@corp.mail.ru'

Program received signal SIGSEGV, Segmentation fault. 0xb5fdecf8 in mrim_move_buddy () from /usr/lib/purple-2/mrim-underbush.so

Buddy group: «Buddies»; Target group: «Abs-Agents»; Buddy ID: «support@corp.mail.ru».

Branch: master

$ pidgin --version Pidgin 2.10.0 (libpurple 2.10.0)

$ cat config.h | grep -oE 'git[0-9]+' git20111104

Comments (5)

  1. Janus Kobain reporter

    Comment 1 originally posted by plaque_fcc on 2011-11-06T12:06:13.000Z:

    (16:04:27) mrim-prpl: Moving 'mrim_move_buddy' to group 'support@corp.mail.ru'

    Program received signal SIGSEGV, Segmentation fault. 0xb5532cf8 in mrim_move_buddy () from /usr/lib/purple-2/mrim-underbush.so (gdb) bt

    1.  0 0xb5532cf8 in mrim_move_buddy () from /usr/lib/purple-2/mrim-underbush.so
    2.  1 0xb74af76f in serv_move_buddy () from /usr/lib/libpurple.so.0
    3.  2 0xb7466949 in purple_blist_add_contact () from /usr/lib/libpurple.so.0
    4.  3 0x0014747d in ?? ()
    5.  4 0xb766814c in g_cclosure_marshal_VOIDVOID () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    6.  5 0xb7666c3c in g_closure_invoke () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    7.  6 0xb76799f0 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    8.  7 0xb7682787 in g_signal_emit_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    9.  8 0xb76828f3 in g_signal_emit () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    10.  9 0xb7b1d4d5 in gtk_widget_activate () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
    11.  10 0xb79fa977 in gtk_menu_shell_activate_item () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
    12.  11 0xb79fad81 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
    13.  12 0xb79ee05d in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
    14.  13 0xb79e4c52 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
    15.  14 0xb766568d in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    16.  15 0xb7666c3c in g_closure_invoke () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    17.  16 0xb7679838 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    18.  17 0xb7682599 in g_signal_emit_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    19.  18 0xb76828f3 in g_signal_emit () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
    20.  19 0xb7b1e553 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
    21.  20 0xb79e2eae in gtk_propagate_event () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
    22.  21 0xb79e3240 in gtk_main_do_event () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
    23.  22 0xb7855888 in ?? () from /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
    24.  23 0xb759d25f in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
    25.  24 0xb759d990 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
    26.  25 0xb759df9b in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
    27.  26 0xb79e1fcf in gtk_main () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
    28.  27 0x00138bf8 in main ()

    Это точно так. До сих пор.

  2. Janus Kobain reporter

    Comment 4 originally posted by plaque_fcc on 2012-02-02T10:55:18.000Z:

    cl.c@8fb4b0b043c0, line 297:

    GList *g = g_list_first(g_hash_table_get_values(mrim->groups));

    В список групп каким-то образом попадают элементы с .name != NULL и непригодные для g_strcmp0.

    Идеи есть?

  3. Janus Kobain reporter

    Comment 6 originally posted by plaque_fcc on 2012-04-09T16:52:04.000Z:

    (20:24:45) mrim-prpl: [mrim_move_buddy] Moving 'foo@list.ru' to group 'Abs-Etc' (20:24:45) mrim-prpl: [get_mrim_group_by_name] name = 'Abs-Etc' (20:24:45) mrim-prpl: [get_mrim_group_by_name] group info: (id, flags) = (2173692744,2179147912)

    Program received signal SIGSEGV, Segmentation fault. 0x00d0eb85 in vfprintf () from /lib/i386-linux-gnu/libc.so.6 (gdb) bt

    1.  0 0x00d0eb85 in vfprintf () from /lib/i386-linux-gnu/libc.so.6
    2.  1 0x00db3701 in vasprintf_chk () from /lib/i386-linux-gnu/libc.so.6
    3.  2 0x00b2db66 in g_vasprintf () from /lib/i386-linux-gnu/libglib-2.0.so.0
    4.  3 0x00b06e53 in g_strdup_vprintf () from /lib/i386-linux-gnu/libglib-2.0.so.0
    5.  4 0x00bec801 in ?? () from /usr/lib/libpurple.so.0
    6.  5 0x00beca60 in purple_debug_info () from /usr/lib/libpurple.so.0
    7.  6 0x02104fad in get_mrim_group_by_name (mrim=0x81857468, name=0x8095b3c8 "Abs-Etc") at cl.c:311
    8.  7 0x02105def in mrim_move_buddy (gc=0x81838750, who=0x8095c430 "foo@list.ru", old_group=0x80696238 "Abs-Dev", new_group=0x8095b3c8 "Abs-Etc") at cl.c:523
    9.  8 0x00c207ff in serv_move_buddy () from /usr/lib/libpurple.so.0

    Проблема: первый же результат в списке mrim->groups, судя по всему, какой-то мусорный или является не MrimGroup-структурой.

    При этом свёрнутая группа не считает этого собеседника состоящим в ней и пребывающим в сети: ИмяГруппы (5/150), когда в группе в сети отображается 6 контактов. Полагаю, это связано.

  4. Janus Kobain reporter

    Comment 7 originally posted by plaque_fcc on 2012-04-09T17:40:29.000Z:

    (21:14:39) idle: Setting foo@mail.ru unidle (21:14:39) mrim-prpl: [mrim_close]

    Program received signal SIGSEGV, Segmentation fault. 0x00d3ec6e in free () from /lib/i386-linux-gnu/libc.so.6 (gdb) bt

    1.  0 0x00d3ec6e in free () from /lib/i386-linux-gnu/libc.so.6
    2.  1 0x00aeec1b in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
    3.  2 0x00aeeef6 in g_free () from /lib/i386-linux-gnu/libglib-2.0.so.0
    4.  3 0x02104dc6 in free_mrim_group (group=0x8098c088) at cl.c:282
    5.  4 0x00ad545c in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
    6.  5 0x00ad630b in g_hash_table_remove_all () from /lib/i386-linux-gnu/libglib-2.0.so.0
    7.  6 0x00ad63a6 in g_hash_table_destroy () from /lib/i386-linux-gnu/libglib-2.0.so.0
    8.  7 0x020fecd0 in mrim_close (gc=0x81127bf0) at mrim.c:141
    9.  8 0x00be425d in _purple_connection_destroy () from /usr/lib/libpurple.so.0

    В mrim.c:141 g_hash_table_destroy(mrim->groups); Таким образом, в mrim->groups есть неожиданное значение.

  5. Log in to comment