Patent ID: 8370841

Claim:
A method for managing task events during a first scheduling period of a task executing on a processor of a computing device, the method comprising: detecting when a first access to a first shared resource is granted and, in response to detecting the first access to the first shared resource being granted, setting a first counter, for counting a number of granted accesses to shared resources, to 1 and saving, in a data structure, both a shared resource id of the first shared resource and 1 as an order identifier that indicates an order in which the first shared resource has been granted access during this scheduling period; until detection of an event preventing holding of one of the shared resources for which access has been already granted: incrementing a second counter for each non-deterministic system call; and incrementing the first counter each time a new access to the first shared resource or another shared resource is granted and saving, in the data structure, a corresponding shared resource id and incrementing the order identifier indicating an order in which this shared resource has been granted access during this scheduling period; and upon detection of the event preventing holding of the first shared resource: releasing a hold on the first shared resource; and logging in a fifo queue associated with the processor on which the task is executing, a record comprising a number of non-deterministic system calls based on a value of the second counter, a number of shared resource access grants based on a value of the first counter, and, for each access granted, a corresponding shared resource id and a corresponding order identifier identifying an order of granted access, a number of instructions with checksum and instruction pointer in code of the task, relative to a last system call or granted access to the first shared resource or another shared resource, whichever of them occurs last, and a type of event preventing holding of the first shared resource; and during the scheduling period of the task, and if the first access to the first shared resource has not been detected, upon occurrence of a non-deterministic event, recording the non-deterministic event information in the fifo queue associated with the processor on which the task is executing.