У меня есть эта виртуальная машина Fedora, которая по какой-то причине через некоторое время всегда начинает очень медленную аутентификацию "sudo" (или аутентификацию в целом, например, приложения с графическим интерфейсом, запрашивающие учетные данные). Он будет работать нормально, пока в какой-то момент (*) он не начнет ждать еще 20 секунд, прежде чем отобразить запрос пароля.
(*) Этот момент мог быть после того, как я приостановил и перезапустил виртуальную машину, но я не смог воспроизвести это надежно.
Думаю, я отследил это как-то связанное с DBus, потому что выполнение "strace" sudo дает мне следующее:
0.000040 connect(8, {sa_family=AF_LOCAL, sun_path="/var/run/dbus/system_bus_socket"}, 33) = 0
0.000095 fcntl(8, F_GETFL) = 0x2 (flags O_RDWR)
0.000035 fcntl(8, F_SETFL, O_RDWR|O_NONBLOCK) = 0
0.000039 geteuid() = 0
0.000038 getsockname(8, {sa_family=AF_LOCAL, NULL}, [2]) = 0
0.000060 poll([{fd=8, events=POLLOUT}], 1, 0) = 1 ([{fd=8, revents=POLLOUT}])
0.000041 sendto(8, "\0", 1, MSG_NOSIGNAL, NULL, 0) = 1
0.000090 sendto(8, "AUTH EXTERNAL 30\r\n", 18, MSG_NOSIGNAL, NULL, 0) = 18
0.000135 poll([{fd=8, events=POLLIN}], 1, 4294967295) = 1 ([{fd=8, revents=POLLIN}])
0.000053 read(8, "OK 646ed40b36ee6ecf4fee737c54368"..., 2048) = 37
0.000047 poll([{fd=8, events=POLLOUT}], 1, 4294967295) = 1 ([{fd=8, revents=POLLOUT}])
0.000039 sendto(8, "NEGOTIATE_UNIX_FD\r\n", 19, MSG_NOSIGNAL, NULL, 0) = 19
0.000369 poll([{fd=8, events=POLLIN}], 1, 4294967295) = 1 ([{fd=8, revents=POLLIN}])
0.000047 read(8, "AGREE_UNIX_FD\r\n", 2048) = 15
0.000043 poll([{fd=8, events=POLLOUT}], 1, 4294967295) = 1 ([{fd=8, revents=POLLOUT}])
0.000039 sendto(8, "BEGIN\r\n", 7, MSG_NOSIGNAL, NULL, 0) = 7
0.000088 poll([{fd=8, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=8, revents=POLLOUT}])
0.000041 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\0\0\0\0\1\0\0\0n\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 128}, {"", 0}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 128
0.000108 clock_gettime(CLOCK_MONOTONIC, {115342, 676969855}) = 0
0.000042 poll([{fd=8, events=POLLIN}], 1, 25000) = 1 ([{fd=8, revents=POLLIN}])
0.000818 recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"l\2\1\1\v\0\0\0\1\0\0\0=\0\0\0\6\1s\0\6\0\0\0:1.196\0\0"..., 2048}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 262
0.000062 recvmsg(8, 0x7fff421ab1a0, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
0.000312 eventfd2(0, O_NONBLOCK|O_CLOEXEC) = 9
0.000046 write(9, "\1\0\0\0\0\0\0\0", 8) = 8
0.000042 fstat(8, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
0.000039 fcntl(8, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK)
0.000038 write(9, "\1\0\0\0\0\0\0\0", 8) = 8
0.000133 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\1\1\204\0\0\0\2\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\177\0\0\0type='signal',sender='net.re"..., 132}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 276
0.000130 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\1\1\246\0\0\0\3\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\241\0\0\0type='signal',sender='org.fr"..., 166}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 310
0.000126 clock_gettime(CLOCK_MONOTONIC, {115342, 678759459}) = 0
0.000048 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\33\0\0\0\4\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\26\0\0\0net.reactivated.Fprint\0", 27}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 171
0.000119 clock_gettime(CLOCK_MONOTONIC, {115342, 678926239}) = 0
0.000048 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\0\0\0\0\5\0\0\0\203\0\0\0\1\1o\0\37\0\0\0/net/rea"..., 152}, {"", 0}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 152
0.000267 clock_gettime(CLOCK_MONOTONIC, {115342, 679268460}) = 0
0.000123 poll([{fd=8, events=POLLIN}], 1, 25000) = 1 ([{fd=8, revents=POLLIN}])
0.000060 recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"l\2\1\1\v\0\0\0\3\0\0\0=\0\0\0\6\1s\0\6\0\0\0:1.196\0\0"..., 2048}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 91
0.000065 write(9, "\1\0\0\0\0\0\0\0", 8) = 8
0.000040 recvmsg(8, 0x7fff421ab010, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
0.000053 clock_gettime(CLOCK_MONOTONIC, {115342, 679581347}) = 0
vvvvvvvv
0.000042 poll([{fd=8, events=POLLIN}], 1, 25000) = 0 (Timeout) <<<****** HERE
^^^^^^^^
25.025437 clock_gettime(CLOCK_MONOTONIC, {115367, 705179464}) = 0
0.000562 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\1\1\204\0\0\0\6\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\177\0\0\0type='signal',sender='net.re"..., 132}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 276
0.000835 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\1\1\246\0\0\0\7\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\241\0\0\0type='signal',sender='org.fr"..., 166}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 310
0.000704 write(9, "\1\0\0\0\0\0\0\0", 8) = 8
0.000503 close(8) = 0
Выполнение останавливается примерно на 20 секунд в отмеченной строке с таймаутом.
У кого-нибудь есть идеи? (И нет, это не связано с моим хост-файлом)
У меня была аналогичная проблема: sudo
, su
, и login
все зависают около 20 секунд в ожидании на системном сокете dbus.
Иногда такая проблема возникает из-за отсутствия имени локального хоста в / etc / hosts. (например, если hostname
печать команд foo
можете добавить 127.0.0.1 foo
в / etc / hosts).
Однако в моем случае проблема была вызвана не Бег systemd-logind
или его замена elogind
(который используется в Gentoo). Обычно запускается автоматически, когда libelogind
используется, но в моей системе он был отключен, и недавно после обновления системы все перестало работать.
Запуск elogind
исправил проблему для меня.