I have seen several complaints that applications running on Mac OS X will fail with errors like "Input/output Error" or "Resource temporarily unavailable".
Often when that happens we also see an error in the Samba log like:
[2018/10/02 09:22:29.926391, 0] ../source3/smbd/smb2_server.c:625(smb2_validate_sequence_number)
smb2_validate_sequence_number: bad message_id 4047 (sequence id 4047) (granted = 8, low = 1999, range = 2048)
After examining the code it seemed like some message id were not being used by the Mac.
Yesterday, with the help of a Cubro EX2+, I finally got a complete capture that demonstrates that Mac OS X is incorrectly setting the message ID on a Notify request when it falls in the middle of a bunch of other requests.
I have reported the issue to Apple and they will look at it soon.
Attached is the capture file. It is in six segments that you will have to put back together. In the attached file, look for msg id == 4169 and notice that the next one used is 4193, which is erroneous. (smb2.msg_id == 4169).
I am filing it so others can be aware of the issue
When Apple fixes the problem we can close this bug report.
Created attachment 14705 [details]
First part of capture containing the issue
Created attachment 14706 [details]
Created attachment 14707 [details]
Created attachment 14708 [details]
Created attachment 14709 [details]
Created attachment 14710 [details]
Sixth and last part
The actual problem seems to be that Mac OS X has sent out a Write request with Msg ID 4169 of size 262144, which should consume 4 message IDs/sequence numbers.
The next request is a Notify request on msg ID 4193, which is 24 beyond 4169.
Since Samba did not see 4173, it is still waiting for 4173 and Samba stops issuing credits which prevents the client from sending any more requests.
Could you state the versions of MacOS in which you encountered the problem?
The patches on bug #13796 should fix this...