LearnThatStack Ace your next interview
Concurrency & Multithreading · question
Question 2 of 54

What is a race condition and why is it so hard to reproduce?

beginner
← All Concurrency & Multithreading questions
Re-explain
Visual ↓

A race condition is a bug where the outcome depends on the timing of two or more threads. When they touch shared data and the order is not controlled, results vary from run to run.

Take two threads each reading a counter, adding one, and writing back. If both read the same value before either writes, one increment is lost. The count is wrong only for certain interleavings.

It is hard to reproduce because the bad interleaving is rare. Scheduling is nondeterministic and shifts with load, timing, and the machine. That is why rerunning does not debug a race. You fix it by reasoning about shared state and adding synchronization, not by hunting for the one crash.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

The diagram below the answer is the concept . Jump to it ↓

Tailored explanation · switch back to · ·
What should the new diagram focus on?
Guided practice for Concurrency & Multithreading One question at a time. Answer out loud, get graded, see what you missed.
See it - interactive diagram
Two threads increment one counter and lose an update
Thread A
Shared counter
Thread B
read counter
5
read counter
5
5 + 1 = 6
5 + 1 = 6
write 6
write 6
1step

Thread A wants to add one, so it first asks the shared counter for its current value.

1 / 8

Both threads read 5 before either writes, so both write 6 and one increment is lost. This is only one of the orders the scheduler can pick.

© LearnThatStack - diagrams may not be republished without permission.

Other questions have diagrams like this too. Sign in to ask for one where it's missing - it's free.

Create a free account
How well did you know this?
AI:

Saved in this browser - sign in to keep your review list.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Interview lens How interviewers actually use this question

Likely follow-ups

What you can say

  1. A race condition is a bug where the result depends on the timing of two or more threads that touch shared data in an order nobody controls.
  2. The classic case is two threads incrementing a counter, where each one reads the value, adds one, and writes it back.
  3. If both read the same value before either one writes, one increment is lost, and that only happens for certain interleavings.
  4. It's hard to reproduce because that bad interleaving is rare, and the scheduler is nondeterministic, so the timing shifts with load and with the machine.
  5. That's why rerunning doesn't debug a race, since a clean run proves nothing, so I reason about the shared state and add synchronization instead.

Weak answers to avoid

  • Says to rerun it until it fails The bad interleaving is rare, so a clean run proves nothing. Say you find the shared state and add synchronization instead.
  • Adds a sleep or a retry as the fix A sleep only shifts the timing, so the race hides instead of going away. Control the order with synchronization.
  • Defines it without an example Abstract talk about timing sounds memorized. Walk the read, add and write, and show where two threads overlap and lose an update.
  • Says one core means no race On one core the scheduler can still switch threads between the read and the write. Races come from interleaving, not true parallelism.
Interview lens

Likely follow-ups, what you can say, and the weak answers to avoid.

Sign in free to open it Free account - the lens opens as soon as you're back.

Want a quick review of the fundamentals? See the Concurrency & Multithreading cheatsheet.

← Back to all Concurrency & Multithreading questions
Pro · $10/mo

47 of 54 Concurrency & Multithreading answers are in Pro.

Full answers, code samples, and AI explanations that go simpler or deeper. Cancel anytime.

  • Full answers + code
  • AI explanations, simpler or deeper
  • 1,000 AI credits / month
  • Cancel anytime