IP Library Granted Patent US 7,539,979
Granted Patent B1
US 7,539,979 · App. 12/060,148 · Granted May 26, 2009

Method and system for forcing context-switch during mid-access to non-atomic variables

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 7,539,979
App. No.
12/060,148
Granted
May 26, 2009
Kind
B1
Abstract

The invention provides an improved method for detecting concurrent bugs in multi-threaded software having at least one command to access a non-atomic variable. The non-atomic variable may have a plurality of memory words. In one approach, the method generally involves storing the memory words as atomic variables and replacing the at least one command to access the non-atomic variable with separate instructions to access each of the atomic variables. A thread-switch command is inserted between the atomic variable access commands to increase the likelihood of exposing and detecting synchronization problems.

Claims (20)

1. A method for testing for concurrent bugs in a multi-threaded software, comprising:

loading the software onto a computer, the software comprising a command to access a non-atomic variable, the non-atomic variable comprising a first memory word and a second memory word;

replacing the non-atomic variable with a first atomic variable and a second atomic variable;

storing the first memory word as the first atomic variable;

storing the second memory word as the second atomic variable;

replacing the command to access the non-atomic variable with a first instruction to access the first atomic variable and a second instruction to access the second atomic variable;

inserting a thread-switching code between the first and second instructions, wherein control is passed from a first thread related to the first and second instructions to a second thread of the multi-threaded software that is unrelated to the first and second instructions, thereby generating a modified version of the software; and

running the modified version of the software on the computer to determine whether there are any concurrent bugs related to the non-atomic variable.

2. The method of claim 1 , wherein replacing the command to access the non-atomic variable comprises replacing a read command.

3. The method of claim 1 , wherein replacing the command to access the non-atomic variable comprises replacing a write-to command.

4. The method of claim 1 , wherein storing the first memory word as the first atomic variable comprises storing a high-order word as the first atomic variable.

5. The method of claim 4 , wherein storing the second memory word as the second atomic variable comprises storing a low-order word as the second atomic variable.

6. The method of claim 5 , wherein running the modified version of the at least one module comprises handling the high-order word before the low-order word.

7. A computer readable storage medium for storing a computer program that makes a computer execute:

replacing the non-atomic variable with a first atomic variable and a second atomic variable;

storing the first memory word as the first atomic variable;

storing the second memory word as the second atomic variable;

replacing the at least one command to access the non-atomic variable with a first instruction to access the first atomic variable and a second instruction to access the second atomic variable;

inserting a thread-switch code between the first and second instructions, wherein control is passed from a first thread related to the first and second instructions to a second thread of the multi-threaded software that is unrelated to the first and second instructions, thereby generating a modified software; and

running the modified software to determine whether there are any concurrent bugs related to the non-atomic variable.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: AIRBNB, INC.
Reel/Frame 056427/0193 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2008
From: NIR-BUCHBINDER, YARDEN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 020730/0718 →