Bus mastering VS Bus arbitration
Bus arbitration is not part of several of the protocols you mention. RS422, RS485 and SPI can have bus arbitration but it is not part of the protocol, rather must be implemented on a different communications layer. Ethernet and USB do not really have the concept of multiple masters. The others I don't know well, except for I2C which will be the basis of my answer.

Note that there are I2C implementations that do not support bus arbitration or can be configured to disable this feature. Setting those aside and focusing on full and conformant implementations of I2C...

Since I2C uses open-drain signals pulled high by resistors. This means that anyone can at any time pull any signal LOW without an electrical "collision".

The state of signals are monitored by all active masters. If at any time during a transaction the master sees a LOW signal when it is not itself pulling the signal LOW - it backs off (looses arbitration).

This is essentially how arbitration is implemented on I2C. The master that was sending the LOW wins the arbitration and continues with its transaction.

Only masters that loose arbitration will know that there was a collision. For example, if two masters send the exact same transaction, bit for bit, at the same time they will never notice that there was another master on the bus.

My take on this is that bus arbitration will always occur and work, but in the strictest sense is not always detectable and could be considered to have failed depending on your applications requirements.

Example of a failure:


The slave has an event counter, each time a transaction comes in it counts up by one.
Two masters send a transaction with no data (or data is identical between masters).
It is important that every single transaction is counted at the slave.


If the two masters do a transaction at the same time they will both see it as successful, but the slave will only see one transaction and thus, one event is lost.

If you modify this example such that each master instead sends something unique for each master such as an identifier byte, arbitration will work. One master will loose and can subsequently try again, and no events are lost.