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