The drepl server does not currently have a mutual exclusion between GetNCChanges and DsReplicaSync, meaning that we can get replication errors triggered by an RPC fault if we end up with both outstanding at the same time.
Created attachment 13411 [details] patch for master Attached is a possible patch, under test.
Created attachment 13415 [details] the problem stream (partial pcapng)
Created attachment 13416 [details] subunit logs from the issue matching the capture
(In reply to Andrew Bartlett from comment #2) Ok, I think we hit this in the server, dcesrv_process_ncacn_packet: if (dce_conn->pending_call_list != NULL) { /* * concurrent requests are only allowed * if DCERPC_PFC_FLAG_CONC_MPX was negotiated. */ if (!(dce_conn->state_flags & DCESRV_CALL_STATE_FLAG_MULTIPLEXED)) { dcesrv_call_disconnect_after(call, "dcesrv_auth_request - " "existing pending call without CONN_MPX"); return dcesrv_fault(call, DCERPC_NCA_S_PROTO_ERROR); } } So the fix is correct for now. We should really only do one outgoing operation at a time.
(In reply to Stefan Metzmacher from comment #4) That makes a lot of sense. Thanks!
Created attachment 13421 [details] patch for 4.7 cherry-picked from master