Any change in when so_rcv_mtx is destroyed for UDP?

Rick Macklem <[email protected]>
Newsgroups gmane.os.freebsd.devel.net
Message-ID <CAM5tNy5Phx6rfWH3UDhK9uv_Sdz-fdttZpHzBUyEgkdiOzRTZw@mail.gmail.com>
Hi,

PR#292884 shows a crash where the server side
udp krpc crashes when trying to SOCK_RECVBUF_LOCK()
after soreceive() returns EWOULDBLOCK.

The code looks like:
     error = soreceive(..);
     if (error == EWOULDBLOCK) {
          SOCK_RECVBUF_LOCK();

The only time the server side of the krpc does a soclose()
on a UDP socket is after the refcnt on the xprt structure that
the socket is in goes to 0. Since this code hasn't changed in
a long time, I doubt there is a refcnt problem.

So, is there any change in when so_rcv_mtx gets destroyed
for UDP sockets between FreeBSD-14 and FreeBSD-15?
(Or is there any condition where the so_rcv_mtx gets destroyed
for a UDP socket without a soclose(so) being done?)

If you want to look at the code where the crash occurs,
sys/rpc/svc_dg.c around line# 190.

Thanks for any hints on how this could occur, rick
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.