Skip to content

Latest commit

 

History

History
94 lines (52 loc) · 2.52 KB

File metadata and controls

94 lines (52 loc) · 2.52 KB

Intel Inspector outputs

Simple data race

Intel Inspector detect the simple data race, showing us the conflict load and store.

Also it output a code snippet.

simple_data_race

String data race

string_data_race

Pseudo notification

Data race on string:
pseudo_notify1

Data race on done:
pseudo_notify1

std::map data race

With 6 errors, it detects the race:
map

Data race vs race condition

It detect the multiple data races:

Data race vs race condition

Data race vs race condition

Data race on object destruction

It does not detect anything, this is not the purpose of the data race detector in intel inspector.

Data race on small string destruction

Same as above.

Data race on string destruction

Same as above.

ABA

Intel Inspector does not detect the ABA problem exposed in this code.
Even after looping 1000 times multiple times.

ABA synchronized

It does not detect the aba problem even synchronized on gcc. But it detects it on clang:

aba sync1 clang
aba sync2 clang
aba sync3 clang

We see the delete conflicting with the while in the pop function.

Notification load relaxed

Intel inspector detect a data race but does not understand nor atomics in gcc/clang nor memory ordering constraints

Notification load relaxed in loop

Same as above.

Notification load/store relaxed

Same as above.

Data race atomic fix

Intel inspector detect a data race but does not understand nor atomics in gcc nor memory ordering constraints
so it output error on atomic: atomic read/write gcc

With clang it is fine.

Data race atomic fix relaxed

As expected with gcc it outputs errors an atomic. And with clang it also provoc errors on atomics.

Notification fix

As expected it does not understand memory ordering constraints.

ABA fix