empathy-auth-client SIGABRT in tls_certificate_got_all_cb(): cert_data != NULL

Bug #1064786 reported by avinas
22
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Empathy
Fix Released
Medium
empathy (Ubuntu)
Triaged
Medium
Unassigned

Bug Description

updated system, restarted, started empathy, client crashed

ProblemType: Crash
DistroRelease: Ubuntu 12.10
Package: empathy 3.6.0.3-0ubuntu1
ProcVersionSignature: Ubuntu 3.5.0-17.28-generic 3.5.5
Uname: Linux 3.5.0-17-generic x86_64
NonfreeKernelModules: nvidia
ApportVersion: 2.6.1-0ubuntu2
Architecture: amd64
Date: Wed Oct 10 02:20:32 2012
ExecutablePath: /usr/lib/empathy/empathy-auth-client
InstallationMedia: Ubuntu 12.10 "Quantal Quetzal" - Alpha amd64 (20120909)
ProcCmdline: /usr/lib/empathy/empathy-auth-client
ProcEnviron:
 SHELL=/bin/bash
 XDG_RUNTIME_DIR=<set>
 PATH=(custom, no user)
 LANGUAGE=en_GB:en
 LANG=en_GB.UTF-8
Signal: 6
SourcePackage: empathy
StacktraceTop:
 raise () from /lib/x86_64-linux-gnu/libc.so.6
 abort () from /lib/x86_64-linux-gnu/libc.so.6
 g_assertion_message () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
 g_assertion_message_expr () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
 ?? () from /usr/lib/x86_64-linux-gnu/libtelepathy-glib.so.0
Title: empathy-auth-client crashed with SIGABRT in raise()
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: vboxusers
XsessionErrors: (indicator-multiload:2345): GLib-GIO-CRITICAL **: GApplication subclass 'Main' failed to chain up on ::startup (from start of override function)

Revision history for this message
avinas (avinas17) wrote :
Revision history for this message
Apport retracing service (apport) wrote : Stacktrace.txt
Revision history for this message
Apport retracing service (apport) wrote : StacktraceSource.txt
Revision history for this message
Apport retracing service (apport) wrote : StacktraceTop.txt
Revision history for this message
Apport retracing service (apport) wrote : ThreadStacktrace.txt
Changed in empathy (Ubuntu):
importance: Undecided → Medium
summary: - empathy-auth-client crashed with SIGABRT in raise()
+ empathy-auth-client crashed with SIGABRT in g_assertion_message()
tags: removed: need-amd64-retrace
Revision history for this message
Bilal Shahid (s9iper1) wrote : Re: empathy-auth-client crashed with SIGABRT in g_assertion_message()

thanks for the bug report
1
) can you reproduce ths bug ?
2) if so than define the steps to receat it ?

Bilal Shahid (s9iper1)
Changed in empathy (Ubuntu):
status: New → Incomplete
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for empathy (Ubuntu) because there has been no activity for 60 days.]

Changed in empathy (Ubuntu):
status: Incomplete → Expired
information type: Private → Public
Changed in empathy (Ubuntu):
status: Expired → New
Revision history for this message
In , Sebastien Bacher (seb128) wrote :
Download full text (3.4 KiB)

the bug has been reported on https://bugs.launchpad.net/ubuntu/+source/empathy/+bug/1064786

Stracktrace on https://launchpadlibrarian.net/119303231/Stacktrace.txt

"#0 0x00007feed9c3b425 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
        resultvar = 0
        pid = <optimized out>
        selftid = 2840
#1 0x00007feed9c3eb8b in __GI_abort () at abort.c:91
        save_stage = 2
        act = {__sigaction_handler = {sa_handler = 0xb00000800, sa_sigaction = 0xb00000800}, sa_mask = {__val = {36721360, 140663832230984, 140663871654352, 140663590041824, 101, 140734715490472, 140663587941569, 4294967295, 125, 125, 38576336, 3100784, 0, 38934064, 38978672, 140663838347264}}, sa_flags = -604313724, sa_restorer = 0x5}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2 0x00007feeda24ab87 in g_assertion_message (domain=domain@entry=0x7feedb53450b "tp-glib", file=file@entry=0x7feedb571985 "tls-certificate.c", line=line@entry=253, func=func@entry=0x7feedb571f30 "tls_certificate_got_all_cb", message=<optimized out>) at /build/buildd/glib2.0-2.34.0/./glib/gtestutils.c:1877
        lstr = "253\000\377\177\000\000@q\271Z\377\177\000\000\001\000\000\000\000\000\000\000\362\031W\333\356\177\000"
        s = 0x24ca0d0 ""
#3 0x00007feeda24b0a4 in g_assertion_message_expr (domain=domain@entry=0x7feedb53450b "tp-glib", file=file@entry=0x7feedb571985 "tls-certificate.c", line=line@entry=253, func=func@entry=0x7feedb571f30 "tls_certificate_got_all_cb", expr=expr@entry=0x7feedb5719f2 "cert_data != NULL") at /build/buildd/glib2.0-2.34.0/./glib/gtestutils.c:1888
        s = <optimized out>
#4 0x00007feedb5147f6 in tls_certificate_got_all_cb (proxy=proxy@entry=0x23d70d0, properties=<optimized out>, error=error@entry=0x0, user_data=<optimized out>, weak_object=<optimized out>) at tls-certificate.c:253
        cert_data = 0x0
        self = <optimized out>
        state = 0
        i = <optimized out>
        __PRETTY_FUNCTION__ = "tls_certificate_got_all_cb"
#5 0x00007feedb500603 in _tp_cli_dbus_properties_invoke_callback_get_all (weak_object=<optimized out>, user_data=<optimized out>, generic_callback=0x7feedb5145e0 <tls_certificate_got_all_cb>, args=0x2529740, error=0x0, self=0x23d70d0) at _gen/tp-cli-generic-body.h:1210
No locals.
#6 _tp_cli_dbus_properties_invoke_callback_get_all (self=0x23d70d0, error=0x0, args=0x2529740, generic_callback=0x7feedb5145e0 <tls_certificate_got_all_cb>, user_data=<optimized out>, weak_object=<optimized out>) at _gen/tp-cli-generic-body.h:1193
        callback = 0x7feedb5145e0 <tls_certificate_got_all_cb>
#7 0x00007feedb5067d0 in tp_proxy_pending_call_idle_invoke (p=0x250f700) at proxy-methods.c:155
        pc = 0x250f700
        invoke = <optimized out>
        __PRETTY_FUNCTION__ = "tp_proxy_pending_call_idle_invoke"
#8 0x00007feeda228ab5 in g_main_dispatch (context=0x2381970) at /build/buildd/glib2.0-2.34.0/./glib/gmain.c:2715
        dispatch = 0x7feeda225e60 <g_idle_dispatch>
        was_in_call = 0
        user_data = 0x250f700
        callback = 0x7feedb506760 <tp_proxy_pending_call_idle_invoke>
        cb_funcs = 0x7feeda4d69e0
        cb_data = 0x2521630
        current_source_...

Read more...

summary: - empathy-auth-client crashed with SIGABRT in g_assertion_message()
+ empathy-auth-client SIGABRT in tls_certificate_got_all_cb(): cert_data
+ != NULL
Revision history for this message
In , Sebastien Bacher (seb128) wrote :

The issue has been reported 7969 times since novembre on http://errors.ubuntu.com

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in empathy (Ubuntu):
status: New → Confirmed
Revision history for this message
Guillaume Desmottes (cassidy) wrote :
Bilal Shahid (s9iper1)
Changed in empathy (Ubuntu):
status: Confirmed → Triaged
Revision history for this message
In , Guillaume-desmottes (guillaume-desmottes) wrote :

Looks like TpTLSCertificate tries to inspect a Authentication.TLSCertificate object which either doesn't implement the CertificateChainData property or has a bad value for it so tp_asv_get_boxed() fails and return NULL.

AFAIK, Gabble is the only CM implementing TLSCertificate and the property is always implemented so I'm going to assume we are in the second scenario here.

Gabble uses the result of wocky_tls_session_get_peers_certificate() as value for the CertificateChainData, so if this function returns NULL I guess this may fail.

And actually, this function MAY return NULL, if, depending on the backend,:
 - gnutls_certificate_get_peers() returns NULL
 - SSL_get_peer_cert_chain() reutrns NULL

(Ubuntu's Wocky is built with gnutls).

So I think we may have 2 bugs here:
 - Gabble should deal with wocky_tls_session_get_peers_certificate() returning NULL. By invalidating the Certificate channel?
 - tp-glib shouldn't assert in such case and instead invalidate the certificate proxy

Revision history for this message
In , Guillaume-desmottes (guillaume-desmottes) wrote :

(In reply to comment #2)

> Gabble uses the result of wocky_tls_session_get_peers_certificate() as value
> for the CertificateChainData, so if this function returns NULL I guess this
> may fail.

Looks like dbus-glib crashes if we try to pass NULL as value so thay may not be the reason.

Revision history for this message
In , Guillaume-desmottes (guillaume-desmottes) wrote :

(In reply to comment #2)

> - tp-glib shouldn't assert in such case and instead invalidate the
> certificate proxy

Here is a fix for this one
http://cgit.collabora.com/git/user/cassidy/telepathy-glib/log/?h=cert-61616

I would have been happy to wrote a test for it, but didn't find any way to tweak object_props in tp_tests_tls_certificate_class_init() without creating a whole new class. :\

Changed in empathy:
importance: Unknown → Medium
status: Unknown → Confirmed
Revision history for this message
In , Simon McVittie (smcv) wrote :

Sure, let's have this. "Don't be remotely crashable" is among my D-Bus design principles.

Revision history for this message
In , Simon McVittie (smcv) wrote :

0.20.3, 0.21.1.

Changed in empathy:
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.