The case of the DLL that was not present in memory despite not being formally unloaded, part 2
The article describes a debugging scenario where a DLL that was not formally unloaded was nonetheless absent from memory, tracing the root cause to the interaction of two separate bugs in the system's code.
Background
- This is a post in Raymond Chen's long-running blog "The Old New Thing," which dissects obscure Windows platform behavior, often drawn from real-world debugging cases at Microsoft.
- The title refers to a DLL (Dynamic Link Library) — a module containing code and data that Windows programs load into memory at runtime, rather than linking statically at build time.
- The post picks up a continuing investigation (part 2) into a bug where a DLL appeared to vanish from a process's memory space even though no code had explicitly unloaded it. Such bugs typically cause crashes or data corruption that are hard to reproduce.
- Raymond Chen's audience is experienced Windows system programmers; the humor and value come from showing how two unrelated bugs or design quirks can interact to produce a baffling symptom that doesn't fit any single known failure mode.