A bus works because only one device drives it at a time. Bus contention is what happens when that rule breaks: two outputs are enabled on the same wire together.
If they drive the same value, nothing visibly goes wrong. If they drive different values, one output pushes toward 1 while the other pulls toward 0:
- the wire ends up at some in-between voltage, so readers may see 0, 1, or something that's neither
- a large current flows from one driver into the other, wasting power and heating the chips, which can damage them
Common causes in memory systems:
- a broken chip select decoder that selects two chips at once
- partial address decoding that leaves two chips answering the same address
- timing overlap: one chip still driving the data bus as the next one starts
The cures are the ones you'd expect: tri-state outputs, chip selects from a decoder (whose outputs are one hot, so only one chip is ever selected), and careful timing of output enable.