Jan Zelený <jzeleny(a)redhat.com> writes:
> > There must be something else going on. I tested 2307 on a
group with
> > ~1000 users and I found no problem.
> >
> > Could you provide me a backtrace of the place where the process hangs?
> > Any other information you might have will be useful as well.
>
> I don't have a backtrace, since I compiled this as an rpm. However, an
> strace of sssd_be hopefully holds a clue or two:
> PS. I forgot to mention that I'm using sssd 1.5.12 + memberof patch on
> rhel6 x86_64, since it required the least amount of effort to compile
> and install.
I managed to reproduce this issue, however I'm not sure it was related to the
plugin itself. What seemed to resolve it was update to latest packages in F15
and restart. However I did a small memory optimization, so I'm sending the
corrected patch. Please let me know if everything works for you now. In not,
try attaching gdb to sssd_be process *after* it freezes and send me a
backtrace.
Sorry about the delay, I've been crazy busy the last few days. The
updated patch didn't resolve the issue. A backtrace of sssd_be is
attached, captured while sssd_be was in the "unkillable" state.
#0 __lll_lock_wait_private ()
at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:97
No locals.
#1 0x0000003b8a47bb68 in _L_lock_9159 () at malloc.c:3503
No symbol table info available.
#2 0x0000003b8a479502 in __libc_malloc (bytes=255726235264) at malloc.c:3657
ignore1 = 128
ignore2 = -1971802496
ignore3 = -512
ar_ptr = <error reading variable ar_ptr (Asked for position 0 of stack, stack
only has 0 elements on it.)>
victim = <value optimized out>
hook = <value optimized out>
#3 0x0000003b8a004c62 in local_strdup (
s=0x7f68a48257bc "/lib64/libgcc_s.so.1") at dl-load.c:162
len = 21
new = <value optimized out>
#4 0x0000003b8a0085f6 in _dl_map_object (loader=0x3b8a221188,
name=0x3b8a5516de "libgcc_s.so.1", type=2, trace_mode=0,
mode=<value optimized out>, nsid=<value optimized out>) at dl-load.c:2162
cached = 0x7f68a48257bc "/lib64/libgcc_s.so.1"
namelen = 14
fd = <value optimized out>
realname = <value optimized out>
name_copy = <value optimized out>
l = <value optimized out>
fb = {len = 832,
buf =
"\177ELF\002\001\001\000\000\000\000\000\000\000\000\000\003\000>\000\001\000\000\000\020)\300\220;\000\000\000@\000\000\000\000\000\000\000hd\001\000\000\000\000\000\000\000\000\000@\000\070\000\006\000@\000\037\000\036\000\001\000\000\000\005",
'\000' <repeats 13 times>"\300,
\220;\000\000\000\000\000\300\220;\000\000\000\324V\001\000\000\000\000\000\324V\001\000\000\000\000\000\000\000
\000\000\000\000\000\001\000\000\000\006\000\000\000\330V\001\000\000\000\000\000\330V\341\220;\000\000\000\330V\341\220;\000\000\000\240\003\000\000\000\000\000\000
\006\000\000\000\000\000\000\000\000
\000\000\000\000\000\002\000\000\000\006\000\000\000\bW\001\000\000\000\000\000\bW\341\220;\000\000\000\bW\341\220;\000\000\000\260\001\000\000\000\000\000\000\260\001\000\000\000\000\000\000\b"...}
found_other_class = false
stack_end = <value optimized out>
#5 0x0000003b8a0128d2 in dl_open_worker (a=0x7fff7b826a90) at dl-open.c:226
args = 0x7fff7b826a90
file = 0x3b8a5516de "libgcc_s.so.1"
mode = -2147483647
call_map = <value optimized out>
dst = <value optimized out>
new = <value optimized out>
r = <value optimized out>
reloc_mode = <value optimized out>
l = <value optimized out>
any_tls = <value optimized out>
#6 0x0000003b8a00e0a6 in _dl_catch_error (objname=0x7fff7b826ae0,
errstring=0x7fff7b826ad8, mallocedp=0x7fff7b826aef,
operate=0x3b8a0127b0 <dl_open_worker>, args=0x7fff7b826a90)
at dl-error.c:178
errcode = 0
old = 0x7fff7b826b80
c = {objname = 0x7f68aa7048c8 "\237-", errstring = 0x0,
malloced = 200, env = {{__jmpbuf = {2147483649, 6337619303767480908,
-2, 0, 4, 255723902686, 6337619303828298316,
-6306626998392448436}, __mask_was_saved = 44158276,
__saved_mask = {__val = {32975296, 32961840, 32977600,
223390941224, 0, 115984560, 140735265532912, 0, 17212846784,
115984560, 140735265532984, 0, 33850008, 140735265532968,
140735265532512, 129195568}}}}}
catchp = 0x7f68aa6db6f8
#7 0x0000003b8a01238a in _dl_open (file=0x3b8a5516de "libgcc_s.so.1",
mode=-2147483647, caller_dlopen=0x0, nsid=-2, argc=4,
argv=<value optimized out>, env=0x1f03360) at dl-open.c:555
args = {file = 0x3b8a5516de "libgcc_s.so.1", mode = -2147483647,
caller_dlopen = 0x0, caller_dl_open = 0x3b8a522f20, map = 0x0,
nsid = 0, argc = 4, argv = 0x7fff7b828158, env = 0x1f03360}
objname = <value optimized out>
errstring = <value optimized out>
malloced = <value optimized out>
errcode = <value optimized out>
#8 0x0000003b8a522f20 in do_dlopen (ptr=<value optimized out>) at dl-libc.c:86
args = 0x7fff7b826c80
#9 0x0000003b8a00e0a6 in _dl_catch_error (objname=0x7fff7b826ca0,
errstring=0x7fff7b826c98, mallocedp=0x7fff7b826caf,
operate=0x3b8a522ee0 <do_dlopen>, args=0x7fff7b826c80) at dl-error.c:178
errcode = 0
old = 0x0
c = {objname = 0x2e5c8ba "\263\a", errstring = 0x0, malloced = false,
env = {{__jmpbuf = {64, 6337619303679400524, 103, 140735265533328,
103, 7, 6337619303761189452, -6306626998392448436},
__mask_was_saved = 1, __saved_mask = {__val = {140735265534816,
140735265534348, 140735265533168, 140735265533168,
4294967297, 253403070465, 140735265534816, 140735265534704,
0, 140735265533144, 140735265533148, 140735265533148,
140735265533300, 140735265533300, 4294967297,
140733193388033}}}}}
catchp = 0x7f68aa6db6f8
#10 0x0000003b8a523077 in dlerror_run (name=<value optimized out>,
mode=<value optimized out>) at dl-libc.c:47
objname = 0x7fff7b826d58 "\034"
last_errstring = 0x0
malloced = <value optimized out>
result = <value optimized out>
#11 __libc_dlopen_mode (name=<value optimized out>, mode=<value optimized
out>)
at dl-libc.c:160
args = {name = 0x3b8a5516de "libgcc_s.so.1", mode = -2147483647,
map = 0x0}
#12 0x0000003b8a4fb6e5 in init () at ../sysdeps/ia64/backtrace.c:41
No locals.
#13 0x0000003b8b00cab3 in pthread_once ()
at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S:104
No locals.
#14 0x0000003b8a4fb7e4 in __backtrace (array=<value optimized out>, size=64)
at ../sysdeps/ia64/backtrace.c:85
__p = <value optimized out>
arg = {array = 0x7fff7b827310, cnt = -1, size = 64}
once = 1
#15 0x0000003b8a46f83b in __libc_message (do_abort=2,
fmt=0x3b8a554840 "*** glibc detected *** %s: %s: 0x%s ***\n")
at ../sysdeps/unix/sysv/linux/libc_fatal.c:178
addrs = {0x3000000018, 0x0, 0x7c8efd0, 0xd, 0x2244ed0, 0xd, 0x3,
0x7fff7b827430, 0x1ee7990, 0x5704afe4, 0xd, 0x3ba28021e2, 0x18,
0x7fff7b8273f0, 0x7fff00000018, 0x7fff7b827400, 0x7fff7b8273b0,
0x3ba2803c1f, 0x55, 0x206fd30, 0x7fff7b827410, 0x3ba2804dcf,
0x7fff7b827420, 0x3522d4, 0x3, 0x1ee7990, 0x3ba2804c60, 0x1ee7990,
0x2, 0x3ba28080a2, 0x3, 0x3ba2806937, 0x7fff7b82744c, 0x1, 0x2,
0x30, 0x1, 0x3b00000000, 0xd, 0x0, 0xd, 0x55, 0x7c8efd0, 0x0, 0x3,
0x3ba2802d2a, 0x206fd30, 0x7eb0730, 0x7fff7b8274d0, 0x70, 0x206fd30,
0x55, 0x7eb0730, 0x55, 0x7c8efd0, 0xd, 0x8000000000, 0x550000000d,
0x260119995704afe4, 0x3b8a47950d, 0x1364, 0x1ee7990, 0x1,
0x3ba2807e4a}
n = <value optimized out>
ap = {{gp_offset = 40, fp_offset = 48,
overflow_arg_area = 0x7fff7b827640,
reg_save_area = 0x7fff7b827550}}
ap_copy = {{gp_offset = 16, fp_offset = 48,
overflow_arg_area = 0x7fff7b827640,
reg_save_area = 0x7fff7b827550}}
fd = 2
on_2 = <value optimized out>
list = <value optimized out>
nlist = <value optimized out>
cp = <value optimized out>
written = <value optimized out>
#16 0x0000003b8a475146 in malloc_printerr (action=3,
str=0x3b8a552822 "corrupted double-linked list", ptr=<value optimized
out>)
at malloc.c:6283
buf = "0000000007ebca30"
cp = <value optimized out>
#17 0x0000003b8a478bb4 in _int_malloc (av=0x3b8a78ae80,
bytes=<value optimized out>) at malloc.c:4636
p = <value optimized out>
iters = <value optimized out>
nb = 144
idx = <value optimized out>
bin = <value optimized out>
victim = 0x7ebca30
size = 130985616
victim_index = <value optimized out>
remainder = <value optimized out>
remainder_size = 130985472
block = <value optimized out>
bit = <value optimized out>
map = <value optimized out>
fwd = <value optimized out>
bck = <value optimized out>
errstr = 0x0
#18 0x0000003b8a47950d in __libc_malloc (bytes=122) at malloc.c:3660
ar_ptr = 0x3b8a78ae80
victim = <value optimized out>
hook = <value optimized out>
#19 0x0000003b8d00335f in __talloc (ctx=<value optimized out>,
el_size=<value optimized out>, count=<value optimized out>,
name=<value optimized out>) at talloc.c:405
tc = 0x0
#20 _talloc_named_const (ctx=<value optimized out>,
el_size=<value optimized out>, count=<value optimized out>,
name=<value optimized out>) at talloc.c:516
ptr = 0x2a
#21 _talloc_array (ctx=<value optimized out>, el_size=<value optimized out>,
count=<value optimized out>, name=<value optimized out>) at talloc.c:1849
No locals.
#22 0x0000003403a12af9 in ldb_dn_explode (dn=0x7db2860) at common/ldb_dn.c:348
p = <value optimized out>
ex_name = <value optimized out>
ex_value = <value optimized out>
data = <value optimized out>
d = <value optimized out>
dt = <value optimized out>
t = <value optimized out>
trim = false
in_extended = false
in_ex_name = false
in_ex_value = false
in_attr = false
in_value = false
in_quote = false
is_oid = false
escape = false
x = <value optimized out>
l = <value optimized out>
ret = <value optimized out>
parse_dn = <value optimized out>
is_index = false
#23 0x00007f68a408307d in mbof_mod_process (req=<value optimized out>,
ares=0x7c70aa0) at src/ldb_modules/memberof.c:3033
rc_el = <value optimized out>
ctx = <value optimized out>
added = 0x494b770
removed = 0x494a5f0
key = {type = HASH_KEY_STRING, {
str = 0x7e983f0 "name=joakidy,cn=users,cn=default,cn=sysdb",
ul = 132744176}}
value = {type = HASH_VALUE_LONG, {ptr = 0x1, i = 1, ui = 1, l = 1,
ul = 1, f = 1.40129846e-45, d = 4.9406564584124654e-324}}
add_member = false
ldb = 0x1ed3bc0
valdn = 0x7db2860
ret = <value optimized out>
el = 0x6e7b140
i = <value optimized out>
#24 mbof_mod_execute_cb (req=<value optimized out>, ares=0x7c70aa0)
at src/ldb_modules/memberof.c:2925
ldb = <value optimized out>
mod_ctx = 0x6e9e830
ctx = 0x1f01de0
ret = 0
#25 0x0000003403a1b7ed in ltdb_callback (ev=<value optimized out>,
te=<value optimized out>, t=..., private_data=<value optimized out>)
at ldb_tdb/ldb_tdb.c:1222
ctx = 0x49574c0
ret = <value optimized out>
#26 0x0000003b8bc034e5 in tevent_common_loop_timer_delay (ev=0x1ed3620)
at tevent_timed.c:254
current_time = {tv_sec = 0, tv_usec = 0}
te = 0x4953310
#27 0x0000003b8bc0531b in std_event_loop_once (ev=<value optimized out>,
location=<value optimized out>) at tevent_standard.c:537
std_ev = 0x1ee69b0
tval = {tv_sec = 0, tv_usec = 0}
#28 0x0000003b8bc026d0 in _tevent_loop_once (ev=0x1ed3620,
location=0x3403a27303 "common/ldb.c:578") at tevent.c:490
ret = <value optimized out>
nesting_stack_ptr = 0x0
#29 0x0000003403a0a464 in ldb_wait (handle=0x22962d0, type=LDB_WAIT_ALL)
at common/ldb.c:578
ev = 0x1ed3620
ret = <value optimized out>
#30 0x0000003403a0b7ec in ldb_autotransaction_request (ldb=0x1ed3bc0,
req=0x6e9f960) at common/ldb.c:530
ret = 0
#31 0x0000003403a0b971 in ldb_modify (ldb=0x1ed3bc0, message=0x218ce70)
at common/ldb.c:1423
req = 0x6e9f960
ret = 0
#32 0x00007f68a3e3cdbc in sysdb_set_entry_attr (mem_ctx=<value optimized out>,
ctx=0x1ed27f0, entry_dn=0x6ea13b0, attrs=0x1ef7620, mod_op=2)
at src/db/sysdb_ops.c:466
msg = 0x218ce70
i = <value optimized out>
ret = <value optimized out>
__FUNCTION__ = "sysdb_set_entry_attr"
#33 0x00007f68a3e45b49 in sysdb_store_group (mem_ctx=<value optimized out>,
ctx=0x1ed27f0, domain=0x1ed12e0, name=0x203a330 "spss-usr", gid=70212,
attrs=0x1ef7620, cache_timeout=5400) at src/db/sysdb_ops.c:1591
tmpctx = 0x206e970
src_attrs = {0x7f68a3e5d675 "name", 0x7f68a3e59abe
"gidNumber",
0x7f68a3e5d951 "originalModifyTimestamp", 0x0}
msg = 0x20a7a00
new_group = <value optimized out>
now = <value optimized out>
ret = 0
__FUNCTION__ = "sysdb_store_group"
#34 0x00007f68a3e125f9 in sdap_store_group_with_gid (memctx=0x1ef7b10,
sysdb=0x1ed27f0, dom=0x1ed12e0, opts=0x1eece60,
groups=<value optimized out>, num_groups=1, populate_members=true,
_usn_value=0x1ef7b48) at src/providers/ldap/sdap_async_accounts.c:688
ret = <value optimized out>
#35 sdap_save_group (memctx=0x1ef7b10, sysdb=0x1ed27f0, dom=0x1ed12e0,
opts=0x1eece60, groups=<value optimized out>, num_groups=1,
populate_members=true, _usn_value=0x1ef7b48)
at src/providers/ldap/sdap_async_accounts.c:860
ret = <value optimized out>
tmpctx = 0x2177e10
posix_group = true
el = 0x6e8df30
group_attrs = 0x1ef7620
name = 0x203a330 "spss-usr"
gid = 70212
usn_value = 0x0
#36 sdap_save_groups (memctx=0x1ef7b10, sysdb=0x1ed27f0, dom=0x1ed12e0,
opts=0x1eece60, groups=<value optimized out>, num_groups=1,
populate_members=true, _usn_value=0x1ef7b48)
at src/providers/ldap/sdap_async_accounts.c:1004
tmpctx = 0x218f540
higher_usn = <value optimized out>
usn_value = 0x0
twopass = false
ret = <value optimized out>
i = <value optimized out>
saved_groups = 0x0
nsaved_groups = <value optimized out>
__FUNCTION__ = "sdap_save_groups"
#37 0x00007f68a3e12dd7 in sdap_get_groups_done (subreq=0x0)
at src/providers/ldap/sdap_async_accounts.c:1837
req = 0x1ef6dc0
state = 0x1ef7b10
ret = <value optimized out>
sysret = <value optimized out>
__FUNCTION__ = "sdap_get_groups_done"
#38 0x0000003b8bc03707 in tevent_common_loop_immediate (ev=0x1ecf490)
at tevent_immediate.c:135
im = 0x1ef7bd0
handler = 0x3b8bc046d0 <tevent_req_trigger>
private_data = 0x1ef7740
#39 0x0000003b8bc0530a in std_event_loop_once (ev=0x1ecf490,
location=<value optimized out>) at tevent_standard.c:532
std_ev = 0x1ecf550
tval = {tv_sec = 0, tv_usec = 0}
#40 0x0000003b8bc026d0 in _tevent_loop_once (ev=0x1ecf490,
location=0x435373 "src/util/server.c:550") at tevent.c:490
ret = <value optimized out>
nesting_stack_ptr = 0x0
#41 0x0000003b8bc0273b in tevent_common_loop_wait (ev=0x1ecf490,
location=0x435373 "src/util/server.c:550") at tevent.c:591
ret = <value optimized out>
#42 0x0000000000429493 in server_loop (main_ctx=0x1ed0590)
at src/util/server.c:550
No locals.
#43 0x000000000040d1e7 in main (argc=<value optimized out>,
argv=<value optimized out>) at src/providers/data_provider_be.c:1254
opt = <value optimized out>
pc = <value optimized out>
be_domain = 0x1ece400 "default"
srv_name = <value optimized out>
main_ctx = 0x1ed0590
confdb_path = <value optimized out>
ret = 0
long_options = {{longName = 0x0, shortName = 0 '\000', argInfo = 4,
arg = 0x63ad40, val = 0, descrip = 0x42e452 "Help options:",
argDescrip = 0x0}, {longName = 0x42e460 "debug-level",
shortName = 100 'd', argInfo = 2, arg = 0x63ad14, val = 0,
descrip = 0x42e431 "Debug level", argDescrip = 0x0}, {
longName = 0x42e46c "debug-to-files", shortName = 102 'f',
argInfo = 0, arg = 0x63ae20, val = 0,
descrip = 0x42f048 "Send the debug output to files instead of
stderr", argDescrip = 0x0}, {longName = 0x42e47b "debug-timestamps",
shortName = 0 '\000', argInfo = 2, arg = 0x63ad18, val = 0,
descrip = 0x42e43d "Add debug timestamps", argDescrip = 0x0}, {
longName = 0x42f9ac "domain", shortName = 0 '\000', argInfo
= 1,
arg = 0x7fff7b828018, val = 0,
descrip = 0x42f080 "Domain of the information provider (mandatory)",
argDescrip = 0x0}, {longName = 0x0, shortName = 0 '\000', argInfo = 0,
arg = 0x0, val = 0, descrip = 0x0, argDescrip = 0x0}}
__FUNCTION__ = "main"
A debugging session is active.
Inferior 1 [process 11655] will be detached.
Quit anyway? (y or n) Detaching from program: /usr/libexec/sssd/sssd_be, process 11655
Regards,
--
Trond H. Amundsen <t.h.amundsen(a)usit.uio.no>
Center for Information Technology Services, University of Oslo