* Stefan Monnier : Wrote on Mon, 03 Oct 2022 19:44:29 -0400: > My Gnus session occasionally gets into a state where it insists that my > mail server's DNS name isn't found. I haven't yet managed to get close > to the source of the problem, in large part because I don't know how to > reproduce it. It seems to be associated with network failures (or > captive portals, which are basically purposefully broken networks). > > That a DNS lookup would fail while the network is having problem is of > course normal, but the problem is that the failure seems to persist "for > ever", or more specifically until I restart Emacs. E.g. the old Gnus > sessions will keep giving me a hostname error while at the very same > time all other processes on the system (Firefox, `host`, a fresh new > Emacs, you name it) have no problem finding the IP address of (and even > connecting to) the very same host. > > The last two times this occurred I tried to look a bit more into it, but > I realized that I don't know enough about how this works to know where > to look. > > The error itself is signaled by `make-network-process` and I suspect the > error is actually raised by the following piece of code (tho I couldn't > confirm it because I somehow ended up killing the process while trying to > attach GDB to it): > > msg = network_lookup_address_info_1 (host, portstring, &hints, &res); > if (!EQ (msg, Qt)) > error ("%s", SSDATA (msg)); > > Looking at `network_lookup_address_info_1` it seems it doesn't do much > more than call `getaddrinfo` (I couldn't copy&paste the actual error > message but it basically contains my host name plus some error message > in French, which seems consistent with an error message taken straight > from `gai_strerror`). > > Does anyone here have an idea why `getaddrinfo` might return an outdated > error, or whether it could come from elsewhere? Or how/where I might > find a kind of DNS cache that would be process-local rather > than systemwide? * commit: commit 93bf7d52841c60ffc10e0c9c789a7987812ce55e | Author: Paul Eggert | AuthorDate: Mon Feb 29 09:39:45 2016 -0800 | Commit: Paul Eggert | CommitDate: Mon Feb 29 09:40:58 2016 -0800 | | Stop calling res_init | | Emacs shouldn’t need to call res_init any more, now that nscd or | equivalent is everywhere. On modern systems, calling res_init simply | slows Emacs down. On ancient systems lacking nscd Emacs will still | work well enough with this change; it’s just that it won’t respond to | changes in /etc/resolv.conf Perhaps the expected results result from changes to resolv.conf, and you aren't running glibc's nscd (I don't because it generates a lot of bogus traffic) The attached patch reverts that commit and reinstates res_init, maybe you could try it to see if it helps