Bug 28350

Summary: SSL breaks idle
Product: Telepathy Reporter: Jonny Lamb <jonny.lamb>
Component: idleAssignee: Telepathy bugs list <telepathy-bugs>
Status: RESOLVED MOVED QA Contact: Telepathy bugs list <telepathy-bugs>
Severity: normal    
Priority: medium CC: avs
Version: git master   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Jonny Lamb 2010-06-01 11:06:54 UTC
(telepathy-idle:11677): tp-glib-DEBUG: started version 0.1.6 (telepathy-glib version 0.11.5)
** (telepathy-idle:11677): DEBUG: idle_nickname_is_valid: Validating nickname 'jonnylambtest' with strict mode 1
(telepathy-idle:11677): tp-glib/params-DEBUG: tp_cm_param_setter_offset: account = "jonnylambtest"
(telepathy-idle:11677): tp-glib/params-DEBUG: tp_cm_param_setter_offset: server = "irc.oftc.net"
(telepathy-idle:11677): tp-glib/params-DEBUG: tp_cm_param_setter_offset: port = 6667 = 0x1a0b
(telepathy-idle:11677): tp-glib/params-DEBUG: parse_parameters: password not given, using default behaviour
(telepathy-idle:11677): tp-glib/params-DEBUG: parse_parameters: fullname not given, using default behaviour
(telepathy-idle:11677): tp-glib/params-DEBUG: parse_parameters: username not given, using default behaviour
(telepathy-idle:11677): tp-glib/params-DEBUG: tp_cm_param_setter_offset: charset = "UTF-8"
(telepathy-idle:11677): tp-glib/params-DEBUG: parse_parameters: quit-message not given, using default behaviour
(telepathy-idle:11677): tp-glib/params-DEBUG: tp_cm_param_setter_offset: use-ssl = TRUE
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_class_init: Initializing (TpBaseConnectionClass *)0x637800
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_init: Initializing (TpBaseConnection *)0x63b000
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_constructor: Post-construction: (TpBaseConnection *)0x63b000
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_constructor: Handle repo for type #0 at (nil)
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_constructor: Handle repo for type #1 at 0x637240
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_constructor: Handle repo for type #2 at 0x6372a0
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_constructor: Handle repo for type #3 at (nil)
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_constructor: Handle repo for type #4 at (nil)
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_constructor: Channel manager #0 at 0x62c880
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_constructor: Channel manager #1 at 0x63a630
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_register: bus name org.freedesktop.Telepathy.Connection.idle.irc.jonnylambtest_40irc_2eoftc_2enet0x63b000
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_register: object path /org/freedesktop/Telepathy/Connection/idle/irc/jonnylambtest_40irc_2eoftc_2enet0x63b000
** (telepathy-idle:11677): DEBUG: sconn_status_changed_cb: called with state 1
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_change_status: was 4294967295, now 1, for reason 1
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_change_status: emitting status-changed to 1, for reason 1
** (telepathy-idle:11677): DEBUG: ssl_async_connecting_finished_cb: SSL_connect failed with status -1 (error 1)
** (telepathy-idle:11677): DEBUG: sconn_status_changed_cb: called with state 0
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_change_status: was 1, now 2, for reason 2
(telepathy-idle:11677): tp-glib/connection-DEBUG: tp_base_connection_change_status: emitting status-changed to 2, for reason 2
** (telepathy-idle:11677): DEBUG: iface_ssl_send_impl: connection was not in state CONNECTED
** (telepathy-idle:11677): DEBUG: _send_with_priority: server connection failed to send: connection was not in state CONNECTED
** (telepathy-idle:11677): DEBUG: ssl_io_func: SSL_read failed with error 1
(telepathy-idle:11677): tp-glib/params-DEBUG: connection_shutdown_finished_cb: dereferenced connection
** (telepathy-idle:11677): DEBUG: idle_ssl_server_connection_dispose: dispose called

(telepathy-idle:11677): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `IdleServerConnectionIface'

(telepathy-idle:11677): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `IdleSSLServerConnection'

(telepathy-idle:11677): GLib-GObject-CRITICAL **: g_type_instance_get_private: assertion `instance != NULL && instance->g_class != NULL' failed

Program received signal SIGSEGV, Segmentation fault.
iface_ssl_disconnect_impl_full (iface=<value optimized out>, reason=0, error=0x7fffffffe458) at idle-ssl-server-connection.c:557
557		if (priv->state == SERVER_CONNECTION_STATE_NOT_CONNECTED) {
(gdb) bt
#0  iface_ssl_disconnect_impl_full (iface=<value optimized out>, reason=0, error=0x7fffffffe458) at idle-ssl-server-connection.c:557
#1  0x00000000004106e0 in ssl_io_err_cleanup_func (user_data=0x631df0) at idle-ssl-server-connection.c:304
#2  0x00007ffff6e726c2 in g_main_dispatch (context=0x630fe0) at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c:1960
#3  IA__g_main_context_dispatch (context=0x630fe0) at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c:2513
#4  0x00007ffff6e76538 in g_main_context_iterate (context=0x630fe0, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>) at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c:2591
#5  0x00007ffff6e76a45 in IA__g_main_loop_run (loop=0x632520) at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c:2799
#6  0x00007ffff65df18f in tp_run_connection_manager (prog_name=<value optimized out>, version=<value optimized out>, construct_cm=<value optimized out>, argc=<value optimized out>, argv=<value optimized out>)
    at run.c:285
#7  0x0000000000407507 in main (argc=1, argv=0x7fffffffe708) at idle.c:47
Comment 1 Jonny Lamb 2010-06-01 11:09:26 UTC
*** Bug 26369 has been marked as a duplicate of this bug. ***
Comment 2 Debarshi Ray 2011-08-19 12:04:47 UTC
This list of servers for OFTC in Empathy was incomplete:
https://bugzilla.gnome.org/656933

It did not have the ports on which the servers accept SSL connections, so unless you added them yourself, it won't work.

Having said that, Idle should still not crash. It could be because of this bug in GIO: https://bugzilla.gnome.org/656283
Comment 3 Will Thompson 2012-10-30 18:10:03 UTC
(In reply to comment #2)
> This list of servers for OFTC in Empathy was incomplete:
> https://bugzilla.gnome.org/656933
> 
> It did not have the ports on which the servers accept SSL connections, so
> unless you added them yourself, it won't work.
> 
> Having said that, Idle should still not crash. It could be because of this
> bug in GIO: https://bugzilla.gnome.org/656283

This still crashes Idle. It's easy to test by changing connect/connect-success-ssl.py's final line to read

    exec_test(test, {'use-ssl':dbus.Boolean(True)})#, protocol=SSLIRCServer)

(that is, making Idle use SSL but listening in plaintext).

Idle crashes as follows:

(telepathy-idle:15153): tp-glib/connection-DEBUG: tp_base_connection_change_status: was 1, now 2, for reason 1
(telepathy-idle:15153): tp-glib/connection-DEBUG: tp_base_connection_change_status: emitting status-changed to 2, for reason 1
(telepathy-idle:15153): tp-glib/params-DEBUG: connection_shutdown_finished_cb: dereferenced connection
(telepathy-idle:15153): tp-glib/sasl-DEBUG: tp_simple_password_manager_dispose: dispose called
(telepathy-idle:15153): tp-glib/connection-DEBUG: tp_contacts_mixin_finalize: 0x2582020
** (telepathy-idle:15153): DEBUG: _connect_to_host_ready: g_socket_client_connect_to_host failed: Peer failed to perform TLS handshake
** (telepathy-idle:15153): DEBUG: change_state: emitting status-changed, state 0, reason 0

(telepathy-idle:15153): GLib-GObject-CRITICAL **: g_type_instance_get_private: assertion `instance != NULL && instance->g_class != NULL' failed

with this backtrace:

#3  0x00002b619257c1aa in g_type_instance_get_private (instance=instance@entry=0x2582020, private_type=39298000)
    at /tmp/buildd/glib2.0-2.33.12+really2.32.4/./gobject/gtype.c:4510
#4  0x000000000040b930 in sconn_status_changed_cb (sconn=<optimized out>, state=SERVER_CONNECTION_STATE_NOT_CONNECTED, 
    reason=SERVER_CONNECTION_STATE_REASON_ERROR, conn=0x2582020) at idle-connection.c:743
#5  0x00002b61947127bc in ffi_call_unix64 () from /usr/lib/x86_64-linux-gnu/libffi.so.5
#6  0x00002b6194712237 in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.so.5
#7  0x00002b619255a03b in g_cclosure_marshal_generic (closure=0x258af60, return_gvalue=0x0, n_param_values=<optimized out>, 
    param_values=<optimized out>, invocation_hint=<optimized out>, marshal_data=0x40b900)
    at /tmp/buildd/glib2.0-2.33.12+really2.32.4/./gobject/gclosure.c:1454
#8  0x00002b61925596e0 in g_closure_invoke (closure=0x258af60, return_value=0x0, n_param_values=3, param_values=0x7fff8c042ed0, 
    invocation_hint=0x7fff8c042e70) at /tmp/buildd/glib2.0-2.33.12+really2.32.4/./gobject/gclosure.c:777
#9  0x00002b619256a750 in signal_emit_unlocked_R (node=node@entry=0x2583c00, detail=detail@entry=0, instance=instance@entry=0x2588000, 
    emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fff8c042ed0)
    at /tmp/buildd/glib2.0-2.33.12+really2.32.4/./gobject/gsignal.c:3551
#10 0x00002b61925726bc in g_signal_emit_valist (instance=0x2588000, signal_id=<optimized out>, detail=0, 
    var_args=var_args@entry=0x7fff8c043148) at /tmp/buildd/glib2.0-2.33.12+really2.32.4/./gobject/gsignal.c:3300
#11 0x00002b6192572852 in g_signal_emit (instance=instance@entry=0x2588000, signal_id=<optimized out>, detail=detail@entry=0)
    at /tmp/buildd/glib2.0-2.33.12+really2.32.4/./gobject/gsignal.c:3356
#12 0x00000000004170a1 in change_state (conn=conn@entry=0x2588000, state=state@entry=SERVER_CONNECTION_STATE_NOT_CONNECTED, 
    reason=reason@entry=0) at idle-server-connection.c:212
#13 0x0000000000417aaf in _connect_to_host_ready (source_object=<optimized out>, res=0x2578410, user_data=<optimized out>)
    at idle-server-connection.c:272

which looks a lot like the IdleConnection has been disposed without disconnecting sconn_status_changed_cb from the signal.
Comment 4 GitLab Migration User 2019-12-03 20:08:40 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/telepathy/telepathy-idle/issues/18.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.