Algunas ideas:
1- Instala windows 10 en una VM y prueba.
2- Captura los sql que recibe firebird:
https://stackoverflow.com/questions/...rd-sql-queries
es probable que tengas 2 hilos/procesos que estan variando por problemas de timing y creas que el codigo esta haciendo paso 1 -> paso2 y resulta que es paso2 -> paso1
Ah, se me olvido el paso mas util:
3- Saca ese codigo del programa y lo pones en una app minima (como de consola), Si el error no se reproduce, sabes con certeza que el problema NO esta ahi, o tienes un bug parecido al que te puse arriba del orden.
Si el error SI se reproduce, tienes un codigo mucho mas minimo que mirar. Usando logs/traces puedes ver con claridad que pasa.