A transaction is left open obviously.
I don't know the application, but a good candidate is a timeout.
-The connection was running a long query
-It was timed out
-The connectoin was reused (or the code continued) without rolling back the open transactoin.
Developers sometimes forget about the fact that a timeout does not close the transactions.
If the issue occures regurarily, set up a trace with
-SQL Batch completed
(If you see sp_resetconection call, it can be handled as logout/login, it rolls back every trans)