Handle multithreading bugs

Handle multithreading bugs in C++ — with the four heights of help laid out: do it now, make it easier for the next person to accept, work out the right move when you are stuck, and learn the pattern so it stops coming back.

4prompt heights
Open it in the interactive atlas →

The four heights

The same task, four distances: today's deadline, the next reviewer, the stuck moment, the pattern.

Execute — do the immediate task

+
A race in the physics system intermittently corrupts entity positions. Lock down the update path:…
A race in the physics system intermittently corrupts entity positions. Lock down the update path: identify shared mutable state, add the minimal mutex or std::atomic to protect it, and run the stress test harness for 10 minutes to confirm no corruption. Coordinate with Dana in physics and Raj in gameplay; commit to branch hotfix/physics-race and ask Dana to smoke-test on her machine today.

Improve — make it easier to accept

+
Before I change locks in the physics tick, make the fix reviewer-friendly: summarize which…
Before I change locks in the physics tick, make the fix reviewer-friendly: summarize which variables are truly shared across threads, explain chosen sync primitives and why they avoid deadlock, show a short benchmark of contention cost, and list alternative designs if contention becomes a problem. Flag any functions that must remain lock-free.

Decide — diagnose the stuck moment

+
On heavy server load characters sometimes teleport. I suspect a race between position updates and…

Two players report teleporting characters only on heavy load

On heavy server load characters sometimes teleport. I suspect a race between position updates and snapshotting; Ops is running stress tests but I don't know where the interleaving occurs. The stack traces are noisy and I can't reproduce locally. What is the most likely race pattern and the quickest way to pin down the interleaving in dev so we can add the correct synchronization?

Become — change the pattern

+
Over several sprints we patch race bugs with coarse locks, which solves the bug but creates latency…

We keep fixing races by slapping mutexes and later paying performance penalties

Over several sprints we patch race bugs with coarse locks, which solves the bug but creates latency and slippery refactors later. I keep losing time revisiting the same code and explaining performance regressions. What change in how we approach concurrency design will stop this cycle, and what simple rule should we enforce in code review to prevent future regressions?

Next to this one

Other programming language work people do in C++.

Every task here came from the work, not from a feature list — which is why the prompts name what you want done and never the button that does it. The tool changes; the work does not.
Copyright © LLOS.ai · 2026 — original pedagogy, voice, and design — all rights reserved.

The rest of the map

Same library, five ways in.