Package: knot-resolver
Version: 1.3.3-1
Severity: normal
Tags: patch upstream
Control: forwarded -1 https://gitlab.labs.nic.cz/knot/knot-resolver/issues/271

I'm running kresd 1.3.3,  I found it was stuck in a tight loop.  here's the 
output of strace:

```
write(20, 
"\27\3\3\1\356\0\0\0\0\0\0\0\2H\364\352e\235\t\274\237YF\244\260\250K\223q\211EW"...,
 499) = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=24582, si_uid=110} ---
write(20, 
"\27\3\3\1\356\0\0\0\0\0\0\0\2H\364\352e\235\t\274\237YF\244\260\250K\223q\211EW"...,
 499) = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=24582, si_uid=110} ---
```

looking at the open file descriptors with `lsof`, i see:

```
kresd   24582 knot-resolver   18ur     REG               0,35      8192   12524 
/var/cache/knot-resolver/lock.mdb
kresd   24582 knot-resolver   19u      REG               0,35 104857600   12525 
/var/cache/knot-resolver/data.mdb
kresd   24582 knot-resolver   20u     sock                0,8       0t0 4310946 
protocol: TCPv6
```

If i kill and restart the daemon, it will likely work fine again.


I mentioned this upstream at
https://gitlab.labs.nic.cz/knot/knot-resolver/issues/271, and upstream
suggested the attached patch as a fix.

          --dkg


-- System Information:
Debian Release: buster/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing'), (500, 'oldstable'), 
(200, 'unstable-debug'), (200, 'unstable'), (1, 'experimental-debug'), (1, 
'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.13.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages knot-resolver depends on:
ii  adduser            3.116
ii  dns-root-data      2017072601
ii  libbsd0            0.8.6-3
ii  libc6              2.24-17
ii  libdnssec4         2.6.0-1
ii  libedit2           3.1-20170329-1
ii  libgnutls30        3.5.16-1
ii  libhiredis0.13     0.13.3-2
ii  libknot6           2.6.0-1
ii  liblmdb0           0.9.21-1
ii  libluajit-5.1-2    2.1.0~beta3+dfsg-5.1
ii  libmemcached11     1.0.18-4.2
ii  libmemcachedutil2  1.0.18-4.2
ii  libncurses5        6.0+20170902-1
ii  libnettle6         3.3-2
ii  libsystemd0        235-2
ii  libtinfo5          6.0+20170902-1
ii  libuv1             1.9.1-3
ii  libzscanner1       2.6.0-1
ii  lua-sec            0.6-3
ii  lua-socket         3.0~rc1+git+ac3201d-3

Versions of packages knot-resolver recommends:
pn  knot-resolver-module-http  <none>

knot-resolver suggests no packages.

-- no debconf information
Vladimír Čunát commented:

It's been squashed unfortunately.  Let me cut it out:
```diff
diff --git a/daemon/main.c b/daemon/main.c
index 56c2e85a..518a6c2b 100644
--- a/daemon/main.c
+++ b/daemon/main.c
@@ -17,6 +17,7 @@
 #include <arpa/inet.h>
 #include <stdlib.h>
 #include <string.h>
+#include <signal.h>
 #include <getopt.h>
 #include <libgen.h>
 #include <uv.h>
@@ -640,6 +641,14 @@ int main(int argc, char **argv)
                }
        }
 
+       /* Workaround for https://github.com/libuv/libuv/issues/45
+        * (Write after ECONNRESET crash.) */
+       if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {
+               kr_log_error("[system] can't block SIGPIPE signal: %s\n",
+                            strerror(errno));
+               ret = EXIT_FAILURE;
+       }
+
        if (ret != 0) {
                goto cleanup;
        }
```

---
View it on GitLab: 
https://gitlab.labs.nic.cz/knot/knot-resolver/issues/271#note_60621
You're receiving this email because of your account on gitlab.labs.nic.cz.

Reply via email to