dx-packages team mailing list archive
-
dx-packages team
-
Mailing list archive
-
Message #36682
[Bug 1501244] Re: indicator-session sporadically segfaults if used with winbind
after installing the version with debug symbols in trusty, i figured out
i reversed wrong, it is the get_user_label function.
ii indicator-session 12.10.5+14.04.20140410-0ubuntu1 amd64 indicator showing session management, status and user switching
ii indicator-session-dbgsym 12.10.5+14.04.20140410-0ubuntu1 amd64 debug symbols for package indicator-session
(gdb) bt
#0 get_user_label (user=0xa02db0, user=0xa02db0) at /build/buildd/indicator-session-12.10.5+14.04.20140410/src/service.c:299
#1 get_current_real_name (self=0x831840) at /build/buildd/indicator-session-12.10.5+14.04.20140410/src/service.c:322
#2 action_state_for_header (self=self@entry=0x831910) at /build/buildd/indicator-session-12.10.5+14.04.20140410/src/service.c:179
#3 0x0000000000412c85 in update_header_action (self=0x831910) at /build/buildd/indicator-session-12.10.5+14.04.20140410/src/service.c:210
#4 rebuild_now (self=0x831910, sections=57) at /build/buildd/indicator-session-12.10.5+14.04.20140410/src/service.c:956
#5 0x0000000000412cb0 in rebuild_timeout_func (self=<optimized out>) at /build/buildd/indicator-session-12.10.5+14.04.20140410/src/service.c:993
#6 0x00007fb3e49d7703 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#7 0x00007fb3e49d6ce5 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#8 0x00007fb3e49d7048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#9 0x00007fb3e49d730a in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x0000000000411a35 in main (argc=<optimized out>, argv=<optimized out>) at /build/buildd/indicator-session-12.10.5+14.04.20140410/src/main.c:62
(gdb) i args
user = 0xa02db0
user = 0xa02db0
(gdb) print *user
$1 = {is_current_user = 1, is_logged_in = 0, uid = 0, login_frequency = 0, user_name = 0x0, real_name = 0x0, icon_file = 0x0}
(gdb) disas get_user_label
but user_name and real_name are BOTH NULL.
--
You received this bug notification because you are a member of DX
Packages, which is subscribed to indicator-session in Ubuntu.
Matching subscriptions: dx-packages
https://bugs.launchpad.net/bugs/1501244
Title:
indicator-session sporadically segfaults if used with winbind
Status in indicator-session package in Ubuntu:
Incomplete
Bug description:
when looking into our pc pool with 44 machines, in around 2-5 sessions
the System Menu is missing after a crash of indicator-session-service,
making the users unable to log out using the mouse.
There are arround 100 ubuntu machines for students with 32000 real
users from an active directory. The users cannot see any users real
name.
I wasn't able to find the right debug symbols, but in the disassembly it looks like a crash in service.c:321 .
In the attached crash dump the instruction pointer points to 0x4120a0 in memory, which should be the get_current_realname function.
static const char *
get_current_real_name (IndicatorSessionService * self)
{
GHashTableIter iter;
gpointer key, value;
/* is it the guest? */
if (indicator_session_guest_is_active (self->priv->backend_guest))
return _("Guest");
/* is it a user? */
g_hash_table_iter_init (&iter, self->priv->users);
while (g_hash_table_iter_next (&iter, &key, &value))
{
IndicatorSessionUser * user = value;
if (user->is_current_user) // SEGFAULT PROBABLY HERE (movzx edx, byte ptr [r13]), r13=user ist NULL
return get_user_label (user);
}
return "";
}
The strange thing is: before inserting into the hashmap, every user is checked to be != NULL. So maybe I guessed the wrong function, or there are threading issues.
Disassembly:
0x0000000000412081 <+1484>: mov r13,rax
0x0000000000412084 <+1487>: setne al
0x0000000000412087 <+1490>: test al,al
0x0000000000412089 <+1492>: je 0x411f56 <_start+1185>
0x000000000041208f <+1498>: jmp 0x411f51 <_start+1180>
0x0000000000412094 <+1503>: nop DWORD PTR [rax+0x0]
0x0000000000412098 <+1507>: mov r13,QWORD PTR [rdx+0x20]
0x000000000041209c <+1511>: mov rsi,QWORD PTR [rdx+0x18]
=> 0x00000000004120a0 <+1515>: movzx edx,BYTE PTR [r13+0x0]
0x00000000004120a5 <+1520>: test dl,dl
0x00000000004120a7 <+1522>: je 0x4120d6 <_start+1569>
0x00000000004120a9 <+1524>: mov rax,QWORD PTR [rip+0x248770] # 0x65a820 <g_ascii_table>
0x00000000004120b0 <+1531>: test BYTE PTR [rax+rdx*2+0x1],0x1
0x00000000004120b5 <+1536>: je 0x411f51 <_start+1180>
0x00000000004120bb <+1542>: mov rdx,r13
0x00000000004120be <+1545>: jmp 0x4120cb <_start+1558>
Some command output:
$> lsb_release -rd
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Package version:
$> dpkg -l | grep indicator-session
ii indicator-session 12.10.5+14.04.20150404-0ubuntu1 amd64 indicator showing session management, status and user switching
~$> gsettings list-recursively com.canonical.indicator.session
com.canonical.indicator.session show-real-name-on-panel false
com.canonical.indicator.session suppress-logout-menuitem false
com.canonical.indicator.session suppress-restart-menuitem false
com.canonical.indicator.session suppress-shutdown-menuitem false
com.canonical.indicator.session suppress-logout-restart-shutdown false
com.canonical.indicator.session user-show-menu false
~$> wbinfo -u | wc -l
127390
iw18ejyg@cip-54-54: ~$> python -c 'print(__import__("pwd").getpwnam("iw18ejyg"))'
pwd.struct_passwd(pw_name='iw18ejyg', pw_passwd='*', pw_uid=1069023, pw_gid=1000513, pw_gecos='', pw_dir='/home/stud/iw18ejyg', pw_shell='/bin/bash')
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/indicator-session/+bug/1501244/+subscriptions
References