Red Hat Bugzilla – Bug 217335
gaim jabber cyrus-sasl-md5 crash
Last modified: 2007-11-30 17:07:38 EST
Description of problem:
Gaim beta5 crashes. When we update to gaim to latest beta in Fedora Core 6,
cyrus-sasl-md5-2.1.22-4 is installed for dependeny. When gaim is started, it
crashes. As far as I can see from the backtrace, it is the cyrus-sasl-md5 that
causes the problem. This is x86 using kernel-2.6.18-1.2849.fc6, and all the
updates are applied.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Update to gaim-2.0.0-0.22.beta5
2. Start gaim
It should not crash :)
Created attachment 142158 [details]
Full gdb backtrace of the crash
Please install these debuginfo packages then get another backtrace.
Created attachment 142216 [details]
Gaim2 beta5 crash - gdb backtrace with debug packages installed
$ rpm -qv gaim-debuginfo cyrus-sasl-debuginfo
It appears that your gaim-debuginfo doesn't match the gaim package version?
Another question, if you "rpm -e cyrus-sasl-md5 --nodeps" then restart gaim,
does it work without crashing?
This appears to be a bug in either gaim or cyrus-sasl's md5 plugin. Adding nalin.
Another question, what jabber server are you connecting to? Is it available to
(In reply to comment #5)
> Another question, what jabber server are you connecting to? Is it available to
> the public?
Some of them are public; some of them are not.
I have an jabber.org account. Also there is a gmail.com account. In addition to
these, I have 4 other non-public OSS-related jabber servers.
I use gmail.com jabber with seemingly no problem.
Could you please disable the various jabber accounts to see if any server in
particular triggers this problem?
Created attachment 142225 [details]
Gaim2 beta5 crash - gdb backtrace with debug packages installed #2
This is the new backtrace
(In reply to comment #4)
> It appears that your gaim-debuginfo doesn't match the gaim package version?
I could find only beta3 debuginfo in repo. So, I built mine using the SRPM of
beta5. They should be identical. But it seems I used i386 gaim and i686
debuginfo. Ok, I attached another one again a few mins before.
> Another question, if you "rpm -e cyrus-sasl-md5 --nodeps" then restart gaim,
> does it work without crashing?
That made it. Gaim is running perfectly now.
> This appears to be a bug in either gaim or cyrus-sasl's md5 plugin. Adding
Equivalent bug at Debian
Could someone please find a public Jabber server that exhibits this problem?
BTW... I'm not sure but the crash may happen when we connect to the jabber
servers that we force old SSL. This may help you.
Created attachment 142241 [details]
cyrus-sasl-md5-2.1.22-4 (rebuilt with -O0)
Backtrace gives a little more detail.
The plugin is zeroing out the "clientout" and "clientoutlen" values passed in by
the calling application (see sasl_client_step(3) for more), but gaim is passing
in NULL for their locations.
I just made a change to Gaim SVN that should fix this. Nalin, thanks for
digging through the backtrace for us.
Here's a diff:
*** Bug 217026 has been marked as a duplicate of this bug. ***
ari wrote this patch that is a bit different for Debian.
Which solution is going to be upstream?
ari indicated that the upstream svn patch prevents the crash, but login does not
work. ari's patch is uncertain to be correct either. It would be very helpful
if a cyrus-sasl expert could look at this.
Warren, please remember that I don't have a server to test against here, either.
In what way does login not work? Do you mean authentication fails, or does
something go wrong immediately after authentication succeeds, or does this cause
a problem with the LOGIN mechanism?
I'm seeing the same behavior here when using old SSL. To add to Warren's
comments, there is something else not quite right here with cyrus-sasl in
addition to what was fixed in the patch in comment #16 which causes gaim to no
longer segfault due to the NULL values.
For me, the login tries to proceed but gaim complains about an invalid response
from the jabber server. I've attached the gaim debug output from a login
If need be, I can create some demo accounts on my jabber server for testing; I'm
running Wildfire 3.1.1.
Created attachment 142317 [details]
gaim jabber login transaction log
gaim has two different code paths for jabber authentication with either PLAIN or
MD5. If gaim is built without cyrus-sasl, it uses an internal implementation
for PLAIN and MD5 which is known to work fine. However, if you build with
cyrus-sasl, it only uses plugins that are installed for cyrus-sasl.
cyrus-sasl-plain seems to work fine, as Fedora gaim has been using this for a
while now with cyrus-sasl-plain in a default install. It seems that the other
methods like SASL MD5 never did work in gaim, and we haven't hit it often before
because nothing pulled in cyrus-sasl-md5 as a dependency.
SASL handling in gaim's jabber plugin seems to be either incomplete or just
plain wrong. The challenge/response sequence when doing md5 is different than
the internal md5 implementation in gaim. gaim upstream is not sure who wrote
this code, and nobody seems to understand cyrus-sasl in order to fix it with
The simple workaround would be to disable building against cyrus-sasl, however
then we would lose the ability to use jabber with kerberos authentication.
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux major release. Product Management has requested further
review of this request by Red Hat Engineering, for potential inclusion in a Red
Hat Enterprise Linux Major release. This request is not yet committed for
*** Bug 218061 has been marked as a duplicate of this bug. ***
For a Jabber server to test on - try talk.google.com.
faceprint upstream implemented a fix for this. This is building in -0.26
currently. We will be able to test it soon.
Fix is now in Fedora Core 6.
Works for me.
QE ack for RHEL5.
A package has been built which should help the problem described in
this bug report. This report is therefore being closed with a resolution
of CURRENTRELEASE. You may reopen this bug report if the solution does
not work for you.