is it possible your timer handler event is getting re-entered while you are still in there?
For example:
using a Application.ProcessMessages in code that got used from the Ontimer event?
I guess it could also be in libs that you didn't even write...
trying putting a re-entry test on the OnTimerEvent block
---
If Busy Then Exist else Busy := true;
do your timer event code now...
Busy := False;
event code doen..