To help developers investigate the update conflicts, Firebird puts into error messages the reference to the concurrent transaction – i.e., the transaction where the concurrent update is not yet committed. Together with Trace API, it gives us the ability to track both conflicting operations.
Let's consider the practical steps on how to do it: read the article "How to track deadlocks in Firebird".