IP Library › Granted Patent US 11,366,740
Granted Patent B2
US 11,366,740 · App. 16/883,077 · Granted Jun 21, 2022

Debugging shared memory errors

Inventors: Geoffrey Finn Grimwood (Cambridge, GB); Lee Marshall (Cambridge, GB); Marco Barisione (Cambridge, GB); Mark Williamson (Cambridge, GB); Gregory Edward Warwick Law (Cambridge, GB)
Assignee: Undo Ltd.
G06F11/3636G06F9/544G06F11/366G06F16/1734G06F9/30043G06F9/3851G06F11/1438G06F11/2033G06F11/3471G06F11/3476G06F11/3644G06F11/3668
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,366,740
App. No.
16/883,077
Granted
Jun 21, 2022
Kind
B2
Abstract

There is provided a method for debugging errors in a shared memory. The method comprises executing instrumented machine code of a plurality of processes to generate a recorded execution of each of the plurality of processes for deterministic replay of the recorded execution. The method further comprises logging accesses to the shared memory by each of the plurality of processes in a shared memory log for debugging errors in the shared memory by analysing the recorded executions and the shared memory log. The shared memory log is accessible by each of the plurality of processes.

Claims (37)

1. A method for debugging errors in a shared memory, the method comprising:

executing instrumented machine code of a plurality of processes to generate a recorded execution of each of the plurality of processes for deterministic replay of the recorded execution, each of the plurality of processes being an independently deterministically replayable entity;

logging accesses to the shared memory by each of the plurality of processes in a shared memory log for debugging errors in the shared memory by analysing the recorded executions and the shared memory log; and

wherein the shared memory log is accessible by each of the plurality of processes and wherein the shared memory log includes data indicative of a time of access of the shared memory by each of the plurality of processes associated with a write to the shared memory.

2. The method of claim 1 , further comprising:

generating a list comprising accesses by the plurality of processes to a location of the shared memory based upon the shared memory log.

3. The method of claim 1 , further comprising:

replaying the recorded execution of one of the plurality of processes; and

generating a list comprising previous accesses by the plurality of processes to a location of the shared memory prior to a current point in the replayed recorded execution based upon the shared memory log.

4. The method of claim 3 , wherein generating the list is further based upon the replaying the recorded executions of each of the processes of the plurality of processes.

5. The method of claim 1 , further comprising:

identifying a process of the plurality of processes that caused an error in the shared memory based upon the shared memory log and the recorded execution of each of the plurality of processes.

6. The method of claim 1 , wherein the shared memory log comprises data indicative of one or more of the following: an access mode, a location of the shared memory being accessed, and an access length.

7. The method of claim 1 , wherein data associated with an access to a location of the shared memory is determined based upon replaying a corresponding recorded execution.

8. The method of claim 1 , wherein the accesses are stored in the shared memory log in order of execution of the accesses by the plurality of processes.

9. The method of claim 1 , wherein the shared memory log comprises a cache indicative of an initial state of the shared memory.

10. The method of claim 9 , further comprising:

determining whether a shared memory access alters data stored in the shared memory based upon a comparison to the cache when recording the execution of the plurality of processes; and

updating the shared memory log with cache update data based upon a change in the shared memory caused by the shared memory access.

11. The method of claim 10 , further comprising:

updating the cache based upon the cache update data.

12. The method of claim 10 , further comprising:

determining data associated with the shared memory access based upon the cache and the cache update data when replaying a process of the plurality of processes.

13. The method of claim 1 , wherein the plurality of processes are a subset of the processes that have access to the shared memory.

14. The method of claim 1 , wherein the method is carried out by a backwards debugger configured to replay a recorded execution of a process, wherein replaying comprises reversing the process' state to a previous state in the recorded execution.

15. The method of claim 1 , wherein the instrumented machine code is dynamically instrumented for logging shared memory accesses.

16. A computer system comprising:

a memory storing processor readable instructions;

a processor arranged to read and execute instructions stored in the memory;

wherein the processor readable instructions are arranged to cause the processor to carry out a method comprising:

executing instrumented machine code of a plurality of processes to generate a recorded execution of each of the plurality of processes for deterministic replay of the recorded execution, each of the plurality of processes being an independently deterministically replayable entity;

logging accesses to a shared memory by each of the plurality of processes in a shared memory log for debugging errors in the shared memory by analysing the recorded executions and the shared memory log; and

wherein the shared memory log is accessible by each of the plurality of processes and wherein the shared memory log includes data indicative of a time of access of the shared memory by each of the plurality of processes associated with a write to the shared memory.

17. A non-transitory computer readable medium comprising processor readable instructions, wherein the processor readable instructions are arranged to cause a processor to carry out a method comprising:

executing instrumented machine code of a plurality of processes to generate a recorded execution of each of the plurality of processes for deterministic replay of the recorded execution, each of the plurality of processes being an independently deterministically replayable entity;

logging accesses to a shared memory by each of the plurality of processes in a shared memory log for debugging errors in the shared memory by analysing the recorded executions and the shared memory log; and

wherein the shared memory log is accessible by each of the plurality of processes and wherein the shared memory log includes data indicative of a time of access of the shared memory by each of the plurality of processes associated with a write to the shared memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2020
From: GRIMWOOD, GEOFFREY FINN; MARSHALL, LEE; BARISIONE, MARCO; WILLIAMSON, MARK; LAW, GREGORY EDWARD WARWICK
To: UNDO LTD.
Reel/Frame 053360/0917 →
Continuity (1)
Related Publication 20210374037A1 · Dec 2, 2021