Bug #15481
openSMB listener may terminate
90%
Description
We've seen in the field that the SMB listener has apparently stopped calling accept. Upon examination, the system no longer had a thread running smb_server_listener(), so that thread must have terminated.
We don't have data to show exactly why that happened, but there are a few error responses possible from accept that are not handled, and those could cause the listener thread to terminate.
Let’s try a bit harder to keep going in that thread.
Testing:
With mdb, put a breakpoint just after the accept call in smb_server_listener,
and modify the accept return value to something “unusual”, then continue
and verify that the listener thread keeps running. See log message like:
server smbsrv: [ID 719619 kern.warning] WARNING: smb_server_listener: ksocket_accept(1)
Also ensure that after the experiment, smbd is still accepting connections.
(eg. connect to it from an smb client)