Opened at 2013-03-20T23:55:12Z
Closed at 2013-05-25T12:40:18Z
#1038 closed defect (fixed)
bitlbee dies with SIGABRT when trying to "account off"
| Reported by: | Owned by: | ||
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | BitlBee | Version: | devel |
| Keywords: | Cc: | Matěj, Cepl, <mcepl@…> | |
| IRC client+version: | weechat | Operating System: | Linux |
| OS version/distro: | Fedora 18 |
Description
This is consistent for me. I'm running bitlbee-3.2-1.fc18.x86_64 on Fedora 18. It happens at when I do "account off" for any jabber account. The trace below is for "account off hipchat"
Program received signal SIGABRT, Aborted.
0x00007f336659eba5 in __GI_raise (sig=sig@entry=6)
at ../nptl/sysdeps/unix/sysv/linux/raise.c:63
63 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
(gdb) thread apply all bt full
Thread 1 (Thread 0x7f3368a95740 (LWP 5129)):
#0 0x00007f336659eba5 in __GI_raise (sig=sig@entry=6)
at ../nptl/sysdeps/unix/sysv/linux/raise.c:63
resultvar = 0
pid = 5129
selftid = 5129
#1 0x00007f33665a0358 in __GI_abort () at abort.c:90
save_stage = 2
act = {__sigaction_handler = {sa_handler = 0x7f33666e0ba1,
sa_sigaction = 0x7f33666e0ba1}, sa_mask = {__val = {3,
140734403060427, 5, 139858738543988, 1, 139858738550686, 3,
140734403060404, 12, 139858738550690, 2, 139858738550690, 2,
140734403061216, 18, 140734403062976}}, sa_flags = 98, sa_restorer = 0x7}
sigs = {__val = {32, 0 <repeats 15 times>}}
#2 0x00007f33665de59b in __libc_message (do_abort=do_abort@entry=2,
fmt=fmt@entry=0x7f33666e2b88 "*** glibc detected *** %s: %s: 0x%s ***\n")
at ../sysdeps/unix/sysv/linux/libc_fatal.c:197
ap = {{gp_offset = 40, fp_offset = 48, overflow_arg_area =
0x7fff481a2cd0, reg_save_area = 0x7fff481a2be0}}
ap_copy = {{gp_offset = 16, fp_offset = 48, overflow_arg_area =
0x7fff481a2cd0, reg_save_area = 0x7fff481a2be0}}
fd = 2
on_2 = <optimized out>
list = <optimized out>
nlist = <optimized out>
cp = <optimized out>
written = <optimized out>
#3 0x00007f33665e4776 in malloc_printerr (action=3, str=
0x7f33666e2cc0 "munmap_chunk(): invalid pointer", ptr=<optimized out>)
at malloc.c:4969
buf = "00007f336918276c"
cp = <optimized out>
#4 0x00007f33681d279f in g_free (mem=0x7f336918276c) at gmem.c:252
No locals.
#5 0x00007f3368b058fb in ssl_disconnect (conn_=0x7f33691a9140)
at ssl_nss.c:298
conn = 0x7f33691a9140
#6 0x00007f3368b15f58 in jabber_logout (ic=0x7f3369182600) at jabber.c:305
jd = 0x7f3369182660
#7 0x00007f3368b09ba0 in imc_logout (ic=0x7f3369182600,
allow_reconnect=allow_reconnect@entry=0) at nogaim.c:376
bee = 0x7f3369168620
a = 0x7f336917cad0
l = <optimized out>
delay = <optimized out>
#8 0x00007f3368b07c1f in account_off (bee=<optimized out>, a=0x7f336917cad0)
at account.c:358
No locals.
#9 0x00007f3368af55e4 in root_privmsg (iu=0x7f336916a100, msg=
0x7f33692627b2 "account hipchat off") at irc_user.c:225
cmd = 0x7fff481a2d90 "account"
#10 0x00007f3368af1b1b in control_channel_privmsg (ic=0x7f336917b140, msg=
0x7f33692627b2 "account hipchat off") at irc_channel.c:599
irc = <optimized out>
iu = 0x7f336916a100
s = <optimized out>
#11 0x00007f3368aedd5c in irc_process (irc=irc@entry=0x7f3369168270)
at irc.c:393
conv = 0x7f33692627a0 "PRIVMSG"
temp = <optimized out>
cmd = 0x7f33692205a0
i = 0
#12 0x00007f3368ae9ecc in bitlbee_io_current_client_read (data=0x7f3369168270,
fd=6, cond=cond@entry=B_EV_IO_READ) at bitlbee.c:226
line =
"PRIVMSG &bitlbee :account hipchat off\r\n\000\071s@public.talk.google.com/TalkGadget1CDF7E77\" to=\"agriffis@gmail.com\"><priority>24</priority><caps:c node=\"http://talkgadget.google.com/client/caps\" ver=\"1.0\" e"...
st = <optimized out>
#13 0x00007f3368afda75 in gaim_io_invoke (data=0x7f33691679e0,
condition=<optimized out>, source=<optimized out>) at events_glib.c:88
gaim_cond = B_EV_IO_READ
st = <optimized out>
#14 gaim_io_invoke (source=<optimized out>, condition=<optimized out>, data=
0x7f33691679e0) at events_glib.c:72
closure = <optimized out>
st = 0
#15 0x00007f33681cca55 in g_main_dispatch (context=0x7f336914b200)
at gmain.c:2715
dispatch = 0x7f336820a7e0 <g_io_unix_dispatch>
was_in_call = 0
user_data = 0x7f33691679e0
callback = 0x7f3368afda30 <gaim_io_invoke>
cb_funcs = 0x7f33684a59a0 <g_source_callback_funcs>
cb_data = 0x7f3369166b80
current_source_link = {data = 0x7f33691683b0, next = 0x0}
need_destroy = <optimized out>
source = 0x7f33691683b0
current = 0x7f336914af60
i = 0
#16 g_main_context_dispatch (context=context@entry=0x7f336914b200)
at gmain.c:3219
No locals.
#17 0x00007f33681ccd88 in g_main_context_iterate (context=0x7f336914b200,
block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at gmain.c:3290
max_priority = 2147483647
timeout = 13072
some_ready = 1
nfds = <optimized out>
allocated_nfds = <optimized out>
fds = 0x7f336927bbc0
#18 0x00007f33681cd182 in g_main_loop_run (loop=0x7f336914b0e0) at gmain.c:3484
__PRETTY_FUNCTION__ = "g_main_loop_run"
#19 0x00007f3368afdaec in b_main_run () at events_glib.c:64
No locals.
#20 0x00007f3368ae912f in main (argc=<optimized out>, argv=0x7fff481a34c8)
at unix.c:183
i = <optimized out>
old_cwd = 0x0
sig = {__sigaction_handler = {sa_handler =
0x7f3368afc070 <sighandler>, sa_sigaction = 0x7f3368afc070 <sighandler>},
sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = -2147483648,
sa_restorer = 0x0}
old = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0},
sa_mask = {__val = {0, 1, 0, 139858747417264, 139858778919904,
139858778919904, 140734403064320, 140734403065032, 139858774096357, 0, 0,
140734403064480, 140734403064320, 17, 139858749616864, 0}}, sa_flags = 0,
sa_restorer = 0x7f54299b4c20}
Attachments (1)
Change History (8)
comment:1 Changed at 2013-03-21T00:04:01Z by
comment:2 Changed at 2013-03-21T00:05:03Z by
| Cc: | Matěj Cepl <mcepl@…> added |
|---|
Matej, let me CC you this way. Might be a known issue already?
comment:3 Changed at 2013-03-21T00:56:38Z by
FYI if I comment out the offending g_free() then I get a different error. Oddly enough it appears to be *earlier* in the sequence.
(gdb) thread apply all bt full
Thread 1 (Thread 0x7ffff7fbc740 (LWP 14284)):
#0 0x00007ffff5ac7ba5 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:63
resultvar = 0
pid = 14284
selftid = 14284
#1 0x00007ffff5ac9358 in __GI_abort () at abort.c:90
save_stage = 2
act = {__sigaction_handler = {sa_handler = 0x7ffff5c09ba1, sa_sigaction = 0x7ffff5c09ba1}, sa_mask = {__val = {3, 140737488344843, 5,
140737316425076, 1, 140737316431774, 3, 140737488344820, 12, 140737316431778, 2, 140737316431778, 2, 140737488345632, 24, 140737488347392}},
sa_flags = 151, sa_restorer = 0x7}
sigs = {__val = {32, 0 <repeats 15 times>}}
#2 0x00007ffff5b0759b in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7ffff5c0bb88 "*** glibc detected *** %s: %s: 0x%s ***\n")
at ../sysdeps/unix/sysv/linux/libc_fatal.c:197
ap = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7fffffffe110, reg_save_area = 0x7fffffffe020}}
ap_copy = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7fffffffe110, reg_save_area = 0x7fffffffe020}}
fd = 13
on_2 = <optimized out>
list = <optimized out>
nlist = <optimized out>
cp = <optimized out>
written = <optimized out>
#3 0x00007ffff5b0ea8e in malloc_printerr (ptr=0x5555558d64f0, str=0x7ffff5c0bbe0 "double free or corruption (fasttop)", action=3) at malloc.c:4969
buf = "00005555558d64f0"
cp = <optimized out>
#4 _int_free (av=0x7ffff5e43740 <main_arena>, p=0x5555558d64e0, have_lock=0) at malloc.c:3826
size = <optimized out>
fb = <optimized out>
nextchunk = <optimized out>
nextsize = <optimized out>
nextinuse = <optimized out>
prevsize = <optimized out>
bck = <optimized out>
fwd = <optimized out>
errstr = 0x7ffff5c0bbe0 "double free or corruption (fasttop)"
locked = <optimized out>
#5 0x00007ffff76fb79f in g_free (mem=0x5555558d64f0) at gmem.c:252
No locals.
#6 0x000055555559f451 in jabber_chat_free (c=0x5555558c6aa0) at conference.c:153
jc = 0x5555558c6870
#7 0x00005555555a50e7 in jabber_logout (ic=0x55555583c620) at jabber.c:297
jd = 0x55555583c680
#8 0x000055555559430f in imc_logout (ic=0x55555583c620, allow_reconnect=0) at nogaim.c:376
bee = 0x555555822620
a = 0x555555836ad0
l = 0x0
delay = 32767
#9 0x00005555555919c9 in account_off (bee=0x555555822620, a=0x555555836ad0) at account.c:358
No locals.
#10 0x000055555557b560 in cmd_account (irc=0x555555822270, cmd=0x555555801b80 <cmd.13649>) at root_commands.c:586
a = 0x555555836ad0
len = 3
#11 0x0000555555579e1e in root_command (irc=0x555555822270, cmd=0x555555801b80 <cmd.13649>) at root_commands.c:67
i = 0
len = 7
#12 0x0000555555579cae in root_command_string (irc=0x555555822270, command=0x7fffffffe340 "account") at root_commands.c:34
No locals.
#13 0x00005555555781fa in root_privmsg (iu=0x555555824100, msg=0x55555597ad82 "account hipchat off") at irc_user.c:225
cmd = "account\000hipchat\000off"
#14 0x0000555555572ded in control_channel_privmsg (ic=0x555555835140, msg=0x55555597ad82 "account hipchat off") at irc_channel.c:599
irc = 0x555555822270
iu = 0x555555824100
s = 0x55555597ad89 " hipchat off"
#15 0x0000555555574457 in irc_cmd_privmsg (irc=0x555555822270, cmd=0x555555950540) at irc_commands.c:354
ic = 0x555555835140
iu = 0x55555597ad95
#16 0x000055555557597f in irc_exec (irc=0x555555822270, cmd=0x555555950540) at irc_commands.c:798
i = 14
n_arg = 2
#17 0x000055555556d227 in irc_process (irc=0x555555822270) at irc.c:393
conv = 0x55555597ad70 "PRIVMSG"
lines = 0x5555559869d0
temp = 0x7fffffffe530 "PRIVMSG &bitlbee :account hipchat off\r\n"
cmd = 0x555555950540
i = 0
#18 0x00005555555674b3 in bitlbee_io_current_client_read (data=0x555555822270, fd=10, cond=B_EV_IO_READ) at bitlbee.c:226
irc = 0x555555822270
line =
"PRIVMSG &bitlbee :account hipchat off\r\n\000.gray@gmail.com/gmail.86FB6FBE\" to=\"agriffis@gmail.com\"><status>http://i.imgur.com/yYwoVJd.jpg</status><show>away</show><priority>0</priority><caps:c node=\"http"...
st = 39
#19 0x0000555555583935 in gaim_io_invoke (source=0x555555822330, condition=G_IO_IN, data=0x5555558219e0) at events_glib.c:88
closure = 0x5555558219e0
gaim_cond = B_EV_IO_READ
st = 0
#20 0x00007ffff76f5a55 in g_main_dispatch (context=0x555555805200) at gmain.c:2715
dispatch = 0x7ffff77337e0 <g_io_unix_dispatch>
was_in_call = 0
user_data = 0x5555558219e0
callback = 0x5555555838be <gaim_io_invoke>
cb_funcs = 0x7ffff79ce9a0 <g_source_callback_funcs>
cb_data = 0x555555820b80
current_source_link = {data = 0x5555558223b0, next = 0x0}
need_destroy = <optimized out>
source = 0x5555558223b0
current = 0x555555804f60
i = 0
#21 g_main_context_dispatch (context=context@entry=0x555555805200) at gmain.c:3219
No locals.
#22 0x00007ffff76f5d88 in g_main_context_iterate (context=0x555555805200, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at gmain.c:3290
max_priority = 2147483647
timeout = 49575
some_ready = 1
nfds = <optimized out>
allocated_nfds = <optimized out>
fds = 0x5555559282a0
#23 0x00007ffff76f6182 in g_main_loop_run (loop=0x5555558050e0) at gmain.c:3484
__PRETTY_FUNCTION__ = "g_main_loop_run"
#24 0x00005555555838a7 in b_main_run () at events_glib.c:64
No locals.
#25 0x0000555555580fb5 in main (argc=4, argv=0x7fffffffeb28) at unix.c:183
i = 0
old_cwd = 0x0
sig = {__sigaction_handler = {sa_handler = 0x55555558148e <sighandler>, sa_sigaction = 0x55555558148e <sighandler>}, sa_mask = {__val = {
0 <repeats 16 times>}}, sa_flags = -2147483648, sa_restorer = 0x0}
old = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0, 140733193388033, 0, 140737325298352, 1363826891,
1363826891, 140737488349760, 93824992308480, 140737351977445, 140737488349424, 533, 140737488349584, 140737488349424, 17, 152, 140737315451602}},
sa_flags = 0, sa_restorer = 0x3bde435c20}
comment:4 Changed at 2013-03-21T01:07:22Z by
Nevermind, ignore that last comment. My source was polluted at that point by various debugging attempts.
However I found the bug, here's the patch:
=== modified file 'lib/ssl_nss.c' --- lib/ssl_nss.c 2013-02-21 19:15:59 +0000 +++ lib/ssl_nss.c 2013-03-21 01:06:41 +0000 @@ -151,7 +151,7 @@ conn->fd = fd; conn->func = func; conn->data = data; - conn->hostname = hostname; + conn->hostname = g_strdup(hostname); /* For now, SSL verification is globally enabled by setting the cafile setting in bitlbee.conf. Commented out by default because probably
You can see that conn->hostname is initialized with g_strdup() in another code path, but here it's being assigned directly.
comment:5 Changed at 2013-03-21T13:10:21Z by
Changed at 2013-04-03T09:35:01Z by
| Attachment: | nss-crash-rhbz922447.patch added |
|---|
suggested patch (just a cosmetic changes from the previous one)
comment:6 Changed at 2013-04-03T09:40:21Z by
We believe that the attached patch (which is http://pkgs.fedoraproject.org/cgit/bitlbee.git/plain/nss-crash-rhbz922447.patch ) is a fix for this issue.
I have done a bit more investigation, and it seems to me (see https://bugzilla.redhat.com/attachment.cgi?id=730821 ), that there shouldn't be more memory problems (that 4k leak in NSS_NoDB_Init is per-connection and hard to avoid; it could be a problem on heavily used public servers, but there I believe you have to have a rather beefy machine anyway).
comment:7 Changed at 2013-05-25T12:40:18Z by
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |

Yet another nss-specific issue. :-( I'll poke the Fedora dev..