Chiosa
Software & Code

Reins steers thread schedules toward concurrency bugs

2 min ·

En termes simples

A bug in a multithreaded program can appear only when threads run in a particular order and shared data has the right value. Reins is a system that uses an agent’s ideas about such bugs to guide thread scheduling, then checks those ideas by running the program.

On a test collection with injected bugs, Reins triggered more distinct bugs than the strongest comparison system under the same inputs and five-hour limit per target. The test used one supplied input per program variant, which did not trigger every injected bug.

La recherche

A concurrency bug may depend on a narrow combination of thread order and shared-data state, making it hard to reproduce within a limited testing budget. Can reasoning about a program’s behavior guide the scheduler toward those rare executions, and can real runs check whether that reasoning is right?

Reins turns an agent’s concurrency-bug hypotheses into checked scheduling constraints, then uses program executions to refine them.

In RaceBench, a test collection with injected concurrency bugs, the researchers counted distinct bugs triggered across 75 program variants.

Reins triggered 769 of 1,500, compared with 731 for the strongest baseline on the total; all tools used the same supplied input for each variant and had five hours per target.

The higher total supports Reins’s performance in this test setup. Because the seed input did not expose every injected bug, the result covers only bugs triggerable with those inputs and within that time budget.

These results come from one run per tool and configuration using a single model. Reins currently covers reached C/C++ shared-memory code and failures that cause crashes, assertion failures or hangs.

Analyse

Détails

Article suivantGenerated tests often fail across valid implementations