Sujet : Re: inn 2.7.0, expire takes ages and hangs
De : aw (at) *nospam* somewhere.invalid (Adam W.)
Groupes : news.software.nntpDate : 05. Nov 2024, 16:50:47
Autres entêtes
Organisation : news.chmurka.net
Message-ID : <f82d92e0-1f5d-4cf0-bed4-0a4e2ea9e5c8-aw@news.chmurka.net>
References : 1 2
User-Agent : tin/2.6.1-20211226 ("Convalmore") (Linux/6.1.21-v7+ (armv7l))
Matija Nalis <
mnalis-news@voyager.hr> wrote:
Usually I'd use lsof(8) to see what is on the other side of that socket, and
try to continue debugging there.
What I know now is that the socket is:
/usr/local/news/run/ctlinndcKoXl2
It appears when expire process starts and disappears when it terminates.
In strace I see that this path is sent to the /usr/local/news/run/control
socket, owned by innd.
I guess that's how ctlinnd works...
So it's possible that something went wrong between expire and innd,
probably in innd itself... some race?
I see that innd is waiting on four sockets now, one of them being
/usr/local/news/run/control, another /usr/local/news/run/nntpin, and
two other being IPv4 and IPv6 listening sockets.
Maybe there's some race in that select loop, maybe if one of these sockets
is readable in just the wrong time, the other is ignored... I'd have to
dig deeper into inn's source.
What I'm surprised is that I'm the first person to stumble upon this bug,
and my setup is pretty typical -- normal modern Debian system, vanilla inn
without any modifications, etc.
you can add "-v level" to increase verbosity of expire(8).
Unfortunately all it seems to be doing is printing history lines and what
it's doing with them. Might be useful, but I don't know if in this case.
I'm testing it, but it doesn't want to hang yet. Hopefully it will. I'm
also thinking of stress-testing just the ctlinnd part of it.