[Pidgin] #17411: Crash (SIGABRT) when trying to connect to the same server twice (IRC)

Pidgin trac at pidgin.im
Sat Sep 7 04:15:52 EDT 2019


#17411: Crash (SIGABRT) when trying to connect to the same server twice (IRC)
--------------------+--------------------------
 Reporter:  äxl     |      Owner:  EionRobb
     Type:  defect  |     Status:  new
Milestone:          |  Component:  unclassified
  Version:  2.13.0  |   Keywords:  irc sigabrt
--------------------+--------------------------
 Hi, I'm on Debian Buster with Gnome 3.30, pidgin 2.13.0-2+b1 and GTK+2
 2.24.32-3.

 This SIGABRT when I was trying to connect to another account (with
 Accounts -> Enable Account) on a server I was already connected to. Pidgin
 was running for a longer time (~24h) and collected some IRC logs.

 (This log is from a 'continue' from GDB console because else I would get
 errors like "SSL Connection Failed" when trying to connect to a new
 server. With SSL disabled it would say "Unable to create new resolver
 process" every time. So the PIDs, LWPs might not be correct.)

 Maybe related: ​https://developer.pidgin.im/ticket/17408 and
 https://developer.pidgin.im/ticket/17410

 {{{
 $ gdb pidgin 7491
 GNU gdb (Debian 8.2.1-2) 8.2.1
 Copyright (C) 2018 Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later
 <http://gnu.org/licenses/gpl.html>
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
 Type "show copying" and "show warranty" for details.
 This GDB was configured as "x86_64-linux-gnu".
 Type "show configuration" for configuration details.
 For bug reporting instructions, please see:
 <http://www.gnu.org/software/gdb/bugs/>.
 Find the GDB manual and other documentation resources online at:
     <http://www.gnu.org/software/gdb/documentation/>.

 For help, type "help".
 Type "apropos word" to search for commands related to "word"...
 Reading symbols from pidgin...Reading symbols from /usr/lib/debug/.build-
 id/08/55315171036acd2c7bdd760a1092371b8bc7eb.debug...done.
 done.
 Attaching to program: /usr/bin/pidgin, process 7491
 [New LWP 7917]
 [New LWP 7953]
 [New LWP 7954]
 [Thread debugging using libthread_db enabled]
 Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
 0x00007f029858a819 in __GI___poll (fds=0x55d29f90e860, nfds=11,
 timeout=11769) at ../sysdeps/unix/sysv/linux/poll.c:29
 29      ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
 Signal        Stop      Print   Pass to program Description
 SIGPIPE       No        No      Yes             Broken pipe
 Continuing.
 [Detaching after fork from child process 10311]
 [Detaching after fork from child process 10320]
 [Detaching after fork from child process 10327]
 ...
 [Detaching after fork from child process 5806]
 [Detaching after fork from child process 5957]
 [Detaching after fork from child process 5968]

 Thread 1 "pidgin" received signal SIGABRT, Aborted.
 __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
 50      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
 #0  0x00007f481f1057bb in __GI_raise (sig=sig at entry=6) at
 ../sysdeps/unix/sysv/linux/raise.c:50
         set = {__val = {0, 17100494478734548224, 94770063193696, 0, 128,
 128, 128, 128, 0, 139947740549044, 94770090869200, 5900411232,
 94770044484880, 0, 139947740827662, 139947740827662}}
         pid = <optimized out>
         tid = <optimized out>
 #1  0x00007f481f0f0535 in __GI_abort () at abort.c:79
         save_stage = 1
         act = {__sigaction_handler = {sa_handler = 0x12e2, sa_sigaction =
 0x12e2}, sa_mask = {__val = {139947737228778, 140725659747436, 0, 1,
 139947740647893, 5968, 0, 0, 140725659747456, 140725659747436,
 139947740813295, 94770086315296, 0, 140725659747728, 140725659747440,
 140725659747840}}, sa_flags = 1056294000, sa_restorer = 0x1000}
         sigs = {__val = {32, 0 <repeats 15 times>}}
 #2  0x00007f481f147508 in __libc_message (action=<optimized out>,
 fmt=fmt at entry=0x7f481f25207b "*** %s ***: %s terminated\n")
 at ../sysdeps/posix/libc_fatal.c:181
         ap = {{gp_offset = 32, fp_offset = 4294967295, overflow_arg_area =
 0x7ffd3ef5c610, reg_save_area = 0x7ffd3ef5c5a0}}
         fd = 4831
         list = <optimized out>
         nlist = <optimized out>
         cp = <optimized out>
         written = <optimized out>
 #3  0x00007f481f1d880d in __GI___fortify_fail_abort
 (need_backtrace=need_backtrace at entry=true, msg=msg at entry=0x7f481f251ff8
 "buffer overflow detected") at fortify_fail.c:28
 #4  0x00007f481f1d8841 in __GI___fortify_fail
 (msg=msg at entry=0x7f481f251ff8 "buffer overflow detected") at
 fortify_fail.c:44
 #5  0x00007f481f1d6940 in __GI___chk_fail () at chk_fail.c:28
 #6  0x00007f481f1d8737 in __fdelt_chk (d=<optimized out>) at
 fdelt_chk.c:25
 #7  0x00007f481f60e1c5 in g_spawn_sync () at /usr/lib/x86_64-linux-
 gnu/libglib-2.0.so.0
 #8  0x00007f481f60e997 in g_spawn_command_line_sync () at /usr/lib/x86_64
 -linux-gnu/libglib-2.0.so.0
 #9  0x00007f481f4bd794 in purple_gnome_proxy_get_parameter
 (parameter=parameter at entry=0 '\000', gnome_version=gnome_version at entry=1
 '\001') at ././libpurple/proxy.c:270
         param = 0x0
         err = 0x0
         param_len = <optimized out>
 #10 0x00007f481f4bde2b in purple_gnome_proxy_get_parameter
 (gnome_version=<optimized out>, parameter=0 '\000') at
 ././libpurple/proxy.c:307
         use_same_proxy = 0
         tmp = <optimized out>
         gnome_version = <optimized out>
         info = {type = PURPLE_PROXY_NONE, host = 0x0, port = 0, username =
 0x0, password = 0x0}
         gpi = <optimized out>
         tmp = <optimized out>
         tmp_none_proxy_info = 0x56316093e170
 #11 0x00007f481f4bde2b in purple_gnome_proxy_get_info () at
 ././libpurple/proxy.c:307
         use_same_proxy = 0
         tmp = <optimized out>
         gnome_version = <optimized out>
         info = {type = PURPLE_PROXY_NONE, host = 0x0, port = 0, username =
 0x0, password = 0x0}
         gpi = <optimized out>
         tmp = <optimized out>
         tmp_none_proxy_info = 0x56316093e170
 #12 0x00007f481f4bde2b in purple_proxy_get_setup
 (account=account at entry=0x56315fc3da80) at ././libpurple/proxy.c:2243
         gpi = <optimized out>
         tmp = <optimized out>
         tmp_none_proxy_info = 0x56316093e170
 #13 0x00007f481f4be3cf in purple_proxy_connect (handle=handle at entry=0x0,
 account=account at entry=0x56315fc3da80, host=host at entry=0x563161649840
 "irc.xxx.net", port=port at entry=6697,
 connect_cb=connect_cb at entry=0x7f481f4d40b0 <purple_ssl_connect_cb>,
 data=data at entry=0x56316163d220) at ././libpurple/proxy.c:2326
         connecthost = 0x563161649840 "irc.xxx.net"
         connectport = 6697
         connect_data = 0x5631621fe530
         __func__ = "purple_proxy_connect"
 #14 0x00007f481f4d3e02 in purple_ssl_connect_with_ssl_cn
 (account=account at entry=0x56315fc3da80, host=0x563161649840 "irc.xxx.net",
 port=6697, func=func at entry=0x7f4814f71ea0 <irc_login_cb_ssl>,
 error_func=error_func at entry=0x7f4814f71020 <irc_ssl_connect_failure>,
 ssl_cn=ssl_cn at entry=0x0, data=0x5631613c77c0) at
 ././libpurple/sslconn.c:137
         gsc = 0x56316163d220
         __func__ = "purple_ssl_connect_with_ssl_cn"
 #15 0x00007f481f4d3eee in purple_ssl_connect
 (account=account at entry=0x56315fc3da80, host=<optimized out>,
 port=<optimized out>, func=func at entry=0x7f4814f71ea0 <irc_login_cb_ssl>,
 error_func=error_func at entry=0x7f4814f71020 <irc_ssl_connect_failure>,
 data=data at entry=0x5631613c77c0) at ././libpurple/sslconn.c:103
 #16 0x00007f4814f70d10 in irc_login (account=0x56315fc3da80) at
 ././libpurple/protocols/irc/irc.c:378
         gc = 0x5631613c77c0
         irc = 0x563162382a00
         userparts = <optimized out>
         username = <optimized out>
 #17 0x00007f481f6a7c8d in g_closure_invoke () at /usr/lib/x86_64-linux-
 gnu/libgobject-2.0.so.0
 #18 0x00007f481f6bb365 in  () at /usr/lib/x86_64-linux-
 gnu/libgobject-2.0.so.0
 #19 0x00007f481f6c42be in g_signal_emit_valist () at /usr/lib/x86_64
 -linux-gnu/libgobject-2.0.so.0
 #20 0x00007f481f6c497f in g_signal_emit () at /usr/lib/x86_64-linux-
 gnu/libgobject-2.0.so.0
 #21 0x00007f481fba7a4a in gtk_widget_activate () at /usr/lib/x86_64-linux-
 gnu/libgtk-x11-2.0.so.0
 #22 0x00007f481faa44bd in gtk_menu_shell_activate_item () at
 /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
 #23 0x00007f481faa478e in  () at /usr/lib/x86_64-linux-
 gnu/libgtk-x11-2.0.so.0
 #24 0x00007f481fa921eb in  () at /usr/lib/x86_64-linux-
 gnu/libgtk-x11-2.0.so.0
 #25 0x00007f481f6a7c8d in g_closure_invoke () at /usr/lib/x86_64-linux-
 gnu/libgobject-2.0.so.0
 #26 0x00007f481f6babbd in  () at /usr/lib/x86_64-linux-
 gnu/libgobject-2.0.so.0
 #27 0x00007f481f6c39ab in g_signal_emit_valist () at /usr/lib/x86_64
 -linux-gnu/libgobject-2.0.so.0
 #28 0x00007f481f6c497f in g_signal_emit () at /usr/lib/x86_64-linux-
 gnu/libgobject-2.0.so.0
 #29 0x00007f481fba8cac in  () at /usr/lib/x86_64-linux-
 gnu/libgtk-x11-2.0.so.0
 #30 0x00007f481fa9048c in gtk_propagate_event () at /usr/lib/x86_64-linux-
 gnu/libgtk-x11-2.0.so.0
 #31 0x00007f481fa9087b in gtk_main_do_event () at /usr/lib/x86_64-linux-
 gnu/libgtk-x11-2.0.so.0
 #32 0x00007f481f903bac in  () at /usr/lib/x86_64-linux-
 gnu/libgdk-x11-2.0.so.0
 #33 0x00007f481f5c5f2e in g_main_context_dispatch () at /usr/lib/x86_64
 -linux-gnu/libglib-2.0.so.0
 #34 0x00007f481f5c61c8 in  () at /usr/lib/x86_64-linux-
 gnu/libglib-2.0.so.0
 #35 0x00007f481f5c64c2 in g_main_loop_run () at /usr/lib/x86_64-linux-
 gnu/libglib-2.0.so.0
 #36 0x00007f481fa8f8e7 in gtk_main () at /usr/lib/x86_64-linux-
 gnu/libgtk-x11-2.0.so.0
 #37 0x000056315ed3098b in main (argc=<optimized out>, argv=<optimized
 out>) at ././pidgin/gtkmain.c:939
         opt_force_online = 0
         opt_help = <optimized out>
         opt_login = 0
         opt_nologin = 0
         opt_version = <optimized out>
         opt_si = <optimized out>
         opt_config_dir_arg = <optimized out>
         opt_login_arg = <optimized out>
         opt_session_arg = <optimized out>
         search_path = <optimized out>
         accounts = <optimized out>
         sig_indx = 1
         sigset = {__val = {91142, 0 <repeats 15 times>}}
         errmsg = '\000' <repeats 1256 times>...
         signal_channel = <optimized out>
         signal_status = <optimized out>
         signal_channel_watcher = 1
         segfault_message_tmp = <optimized out>
         error = 0x0
         opt = <optimized out>
         gui_check = <optimized out>
         debug_enabled = <optimized out>
         migration_failed = 0
         active_accounts = <optimized out>
         long_options = {{name = 0x56315edcec31 "config", has_arg = 1, flag
 = 0x0, val = 99}, {name = 0x56315edbcf79 "debug", has_arg = 0, flag = 0x0,
 val = 100}, {name = 0x56315edcabc2 "force-online", has_arg = 0, flag =
 0x0, val = 102}, {name = 0x56315edbeab8 "help", has_arg = 0, flag = 0x0,
 val = 104}, {name = 0x56315edcaa6e "login", has_arg = 2, flag = 0x0, val =
 108}, {name = 0x56315edcabcf "multiple", has_arg = 0, flag = 0x0, val =
 109}, {name = 0x56315edcabd8 "nologin", has_arg = 0, flag = 0x0, val =
 110}, {name = 0x56315edcec27 "session", has_arg = 1, flag = 0x0, val =
 115}, {name = 0x56315edc12dd "version", has_arg = 0, flag = 0x0, val =
 118}, {name = 0x56315edcec3a "display", has_arg = 1, flag = 0x0, val =
 68}, {name = 0x56315edcb70a "sync", has_arg = 0, flag = 0x0, val = 83},
 {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
 Continuing.
 Couldn't get registers: No such process.
 Couldn't get registers: No such process.
 [Thread 0x7f480bfff700 (LWP 7954) exited]
 [Thread 0x7f4810c3e700 (LWP 7953) exited]
 [Thread 0x7f481a180cc0 (LWP 7917) exited]
 Continuing.
 Couldn't get registers: No such process.
 Couldn't get registers: No such process.
 }}}

--
Ticket URL: <https://developer.pidgin.im/ticket/17411>
Pidgin <https://pidgin.im>
Pidgin


More information about the Tracker mailing list