Bug Classification


Resources and Memory


  • “Order violation” faults are caused by missing or incorrect synchronization, e.g.  an object is dereferenced by thread B before it is initialized by thread A.
  • “Race Condition”:  two or more threads access the same resource with at least one being a write access and the access is not ordered properly.
  • “Atomic violation” faults result from lack of constraints on the interleaving of operations. This happens when atomicity of a certain code region was assumed but failed to guarantee atomicity of in the implementation. Please classify a bug only as atomic violation, when it is not an order violation or race condition.
  • “Deadlock” occurs when two or more threads wait for the other one to release a resource.
  • “Parallelisation” if something is slowing/lagging a thread, and the fix is to have it run by a more appropriate executor, or vice versa, if something multithreaded has to run in a single thread due to some constraints.
  • “Other”
    • “Lock not released” Contrary to a deadlock, there’s no two threads deadlocking on each other, but a method or resource cannot be acquired anymore because the lock was not released on exit. Eg. exception handling within a locked code block without a finally statement leaving the lock acquired while the thread was thrown out of the code block.