GPU readback
Copying data from the GPU back to the CPU — trivial to write, notorious for stalling the pipeline.
The GPU and CPU normally run asynchronously: the CPU queues commands and races ahead while the GPU trails a frame or more behind. A readback breaks that — if the CPU wants to read a rendered pixel, a compute result or an occlusion query, it must wait until the GPU has actually finished, and the sync can cost the whole frame's headroom. Early glReadPixels calls were infamous for exactly this.
The fix is never to read the current frame. You copy to a staging buffer and fetch the result a couple of frames later, once the GPU has passed the point anyway — ring buffers with several staging targets are the standard pattern. GPU picking, screenshots and histogram-based exposure all rely on deferred readback.