[Bug 231330] nscd does not work for long lines in /etc/group

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Sep 12 16:39:55 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=231330

            Bug ID: 231330
           Summary: nscd does not work for long lines in /etc/group
           Product: Base System
           Version: 11.2-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: bugs at FreeBSD.org
          Reporter: pa at chalmers.se

Created attachment 197057
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=197057&action=edit
Relevant config files and source for test program

If I have long entry in /etc/groups it looks like nscd fails to respond and I
get timeouts.

If I restart nscd, the first time I do getgrnam I get a cache miss and it works
as intended but on following calls it takes very long time:
=====
Restart nscd:
root at plywood:/users/pa # /etc/rc.d/nscd restart
Stopping nscd.
Waiting for PIDS: 63354.
Starting nscd.

Do getgrnam on the affected group (group entry about 3500 bytes):
plywood> time ./getgrnam testgroup1
testgroup1
gr_name=testgroup1
gr_gid=20000
0.000u 0.002s 0:00.00 0.0%      0+0k 0+0io 0pf+0w
plywood> time ./getgrnam testgroup1
testgroup1
gr_name=testgroup1
gr_gid=20000
0.000u 0.002s 0:16.26 0.0%      0+0k 0+0io 0pf+0w
plywood> time ./getgrnam testgroup1
testgroup1
gr_name=testgroup1
gr_gid=20000
0.000u 0.002s 0:16.09 0.0%      0+0k 0+0io 0pf+0w

On a not affected group (group entry about 1400 bytes):
plywood> time ./getgrnam testgroup2
testgroup2
gr_name=testgroup2
gr_gid=20001
0.000u 0.002s 0:00.00 0.0%      0+0k 0+0io 0pf+0w
plywood> time ./getgrnam testgroup2
testgroup2
gr_name=testgroup2
gr_gid=20001
0.000u 0.001s 0:00.00 0.0%      0+0k 0+0io 0pf+0w
plywood> time ./getgrnam testgroup2
testgroup2
gr_name=testgroup2
gr_gid=20001
0.000u 0.001s 0:00.00 0.0%      0+0k 0+0io 0pf+0w
======

If I enable debug in nscd and run nscd -nst I can see that the I/O is done by
query_socket_write when the entry is small and it works, but when the entry is
large it takes the path to query_io_buffer_write instead.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list