Troubleshooting · Windows change attribution

BSOD after a Windows update, driver update, or new software: what to undo first

When a blue screen starts right after you update Windows, update a driver, or install new software, the reflex move is to undo the most recent thing. That's often the wrong first experiment. A single update session can change the operating system and several drivers at once, an "application" install can drop a kernel driver behind it, and the newest change is frequently a coincidence rather than the cause.

The question that actually matters is not "what did I touch last?" but "what changed, when did the machine first become unstable, and what evidence connects a specific change to this crash?" This guide is about change attribution: build a timeline, separate the kinds of changes, rank the suspects by the strength of the evidence, roll back the single most defensible change, and then read what the result genuinely tells you. It's a method for deciding what to undo first — and for knowing when the answer is "nothing yet."

It deliberately does not re-teach how to read a stop code or find a hardware suspect; that's covered in the companion Blue Screen of Death guide. Here, the stop code is just one input. The output is a decision: the one change to reverse first, and the evidence that justifies it.

Before you roll anything back: reversible first, destructive never first.

Rolling back a driver, removing a quality update, or uninstalling an app are reversible diagnostic moves — that's the focus of this guide. A Windows reset or a clean install is destructive and is deliberately not the first step here. Before any rollback that could affect availability, back up anything important and make sure you know how to get back to where you started.

A Windows 11 blue screen next to the Windows Update history window, showing a feature update installed the same day the crashes began
Add the hero image at troubleshooting/topics/bsod-after-a-windows-update-driver-update-or-new-software-install/images/ and set the data-src attribute above. This block hides itself until an image exists.

The method

The question is "what changed?"

A post-update crash is a difference problem: the machine was behaving one way, then something changed, and now it behaves another way. Solving it means locating the difference, not guessing at it. The method runs in seven linked steps — change → timeline → evidence → hypothesis → reversible test → result → next decision — and each step produces the input the next one needs.

The step most people skip is the second one: the timeline. It's tempting to jump straight to "the last thing I did," but last changed is not the same as caused the crash. A change that landed three days before the first crash can be more likely than the one that landed an hour before, if the earlier change touched the exact subsystem the crash points at and the later one touched nothing relevant. Chronological proximity is one piece of evidence, not a verdict — and this whole guide is about weighing it against the rest.

Here's the loop in one picture: a change lands, you place it on a timeline, you gather the evidence that says whether it's connected to the crash, you promote the best-supported candidate to a hypothesis, you test it with a single reversible rollback, you read the result honestly, and you either confirm the cause or move to the next hypothesis. Nothing in that loop requires destructive recovery — which is exactly why it's safe to run before you consider a reset.

Change Timeline Evidence Hypothesis Reversible test Result Next decision
Change attribution diagnostic schematic A recent change is placed on a timeline, compared against collected evidence, and split into candidate suspects. The best-supported suspect is selected for a single rollback, tested, and the result either confirms the cause or loops back to the next hypothesis. CHANGE TIMELINE EVIDENCE SUSPECT 1 SUSPECT 2 SUSPECT 3 ROLLBACK TEST RESULT inconclusive → next hypothesis one change at a time · read the result · don't assume timing is proof

Organize your evidence

What changed recently?

Tell the tool what you know changed and it'll show you the specific evidence to collect first. It's an organizing aid, not a diagnosis — it decides what to look at, not what's at fault. If nothing matches, choose "Multiple changes" or "Unknown"; both are common and both have a sensible first move.

If a Windows update is the suspected change, collect:

  • The exact update (KB number) and its install date from Windows Update history.
  • The Windows build before and after — a feature update changes the build, a quality update usually doesn't.
  • Which drivers were also updated in the same session (Device Manager dates, or the driver store).
  • The first BSOD timestamp and stop code, to test whether it lands after the update.
  • Whether the crash reproduces in Safe Mode — that separates the OS update from third-party drivers it may have touched.

If a driver update is the suspected change, collect:

  • Which device's driver changed, and its old and new version plus install date.
  • Whether the driver arrived via Windows Update or a vendor installer — that changes how you roll it back.
  • The stop code and, if available, the faulting module name (a matching .sys is strong evidence).
  • Whether the crash only happens under the workload that uses that driver (gaming for a GPU, file copy for a storage driver).
  • Any other driver that changed in the same window, so you don't test in a vacuum.

If new software is the suspected change, collect:

  • What the installer actually added — services, drivers, filter drivers, or a virtual device, not just the app.
  • The install timestamp versus the first crash timestamp.
  • The stop code, to check whether it points at a subsystem the software touches.
  • Whether the software runs a background service (many "utilities" do) — that's the part that can crash the kernel.
  • Whether the crash still happens if the app is closed but its service is still running.

If several things changed, collect:

  • Every change with a timestamp, so you can order them rather than react to the most recent.
  • The last known-good moment, to define the window that matters.
  • For each change, which subsystem it touched — this is what lets you rank rather than guess.
  • The stop code, to see which change's subsystem it implicates.
  • A plan to test one change at a time, so a success tells you which one worked.

If you don't know what changed, collect:

  • Windows Update history and the driver store, to surface changes you didn't notice.
  • The installed-apps list with install dates, to catch software you forgot about.
  • Reliability Monitor, which often logs a crash and a preceding update you'd miss.
  • The stop code and faulting module, which can point at a component even when you can't recall the change.
  • Any firmware or BIOS change, which is easy to forget and hard to date.

Without JavaScript, all five checklists are shown below — pick the one that fits. The buttons just let you focus on a single situation.

Category 1

Build the timeline first

A timeline is a dated list of everything that changed, ending at the first crash. Its job is to define a window: the machine was stable up to some point, then it wasn't. Every change that landed inside that window is a candidate; everything before the last known-good moment is, for now, out of scope. You're not trying to find the cause here — you're trying to find the field the cause lives in.

The anchor you're looking for is the last known-good state: the last moment the machine did the thing it now fails at, without a crash. "It booted to the desktop fine on Monday evening" is a usable anchor even if you can't name the exact minute, because it bounds the search. Once you have the anchor and the first crash, the interval between them is where you collect changes. A short interval is easier; a long one means you have more candidates to weigh, which is exactly why the next steps matter.

Here's a concrete shape so the abstraction becomes concrete. A Windows feature update installs Monday morning. A graphics driver updates Monday afternoon. A new hardware-monitoring utility is installed Tuesday. The first blue screen appears Wednesday during a game. The naive conclusion is "the Tuesday utility did it, it was last." But the timeline says something more interesting: the GPU driver changed right before a GPU-heavy workload started failing, and the utility doesn't touch graphics at all. The timeline doesn't prove the driver is guilty — but it correctly moves the driver ahead of the newest install, which is the entire point of doing this step.

One warning that pays off later: last changed is not caused. Proximity in time is correlation, and a crash that follows a change by an hour can still be caused by a change three days earlier that degrades something slowly (a marginal memory module that only fails under sustained load, a storage driver that corrupts a file that trips a later component). The timeline's value is that it makes you check the subsystem and the workload, not just the clock.

Where to find each type of evidence when building a change timeline
Change typeEvidence to collectWhere it lives
Windows quality updateKB number + install dateSettings → Windows Update → Update history
Windows feature updateOld and new build numberSettings → System → About, or winver
Driver changeDevice, old/new version, date installedDevice Manager → Properties → Driver; driver store via pnputil /enum-drivers
Software installApp name + install dateSettings → Apps → Installed apps (sorted by date)
Crash + preceding eventsFirst BSOD time, stop code, nearby failuresReliability Monitor (perfmon /rel), Event Viewer
Configuration / firmwareBIOS version + date, recent setting changesmsinfo32, and your own notes
Two commands get you most of this timeline quickly. systeminfo shows the current build and a list of installed updates; perfmon /rel opens Reliability Monitor, which plots crashes against updates on a single timeline — often the fastest way to see whether a blue screen landed right after a change.

Category 2

Separate the Windows change from the driver change

The single most common attribution error is treating "Windows Update" as one change when it's often several. A single update session can bump the operating system and push updated display, storage, network, audio, chipset, Bluetooth, and virtual-device drivers — all with dates that look identical in the update history. If you only know "an update happened on Tuesday," you can't yet tell whether the OS changed, a driver changed, or both, and those have different rollback paths.

Why this distinction matters is that the OS and its drivers fail in different shapes. A bad OS/quality update tends to affect things broadly and can be removed as a unit (uninstall the update, or — for a feature update, within its window — go back to the previous version). A bad driver is narrower: it usually shows up when its specific hardware is used, and it's rolled back per device, not per update. Conflating the two leads people to uninstall an OS update when the real culprit was one driver that happened to ship with it — a bigger, riskier reversal than the one actually needed.

So the goal of this step is to land in one of four boxes: the OS changed, a driver changed, both changed, or the timeline is too coarse to decide. You decide by comparing two independent date sources. Windows Update history dates the OS/quality change. Device Manager (per device) and the driver store date the driver packages. If the driver date is its own distinct moment, the driver is a separate change with its own evidence. If the driver date is identical to the update and you can't tell them apart, you're in the "both / can't decide" box — and the honest next move is the controlled sequencing in Category 8, not a guess.

A practical tell: driver updates delivered through Windows Update often appear as a "driver" entry in the update history and change the driver version in Device Manager. If you see a driver version jump with no separate driver entry, it likely came with the OS update. If you see a driver version jump with its own date or a vendor installer in the app list, that's a distinct change you can test on its own. Naming the box — OS, driver, both, or undecided — is what lets the next section rank the suspects instead of waffling.

Category 3

Find out what the software install actually changed

"I installed an application" is a much weaker claim than "an application installed a kernel filter driver." A lot of software that looks app-level is actually system-level underneath: antivirus and security tools install kernel filter drivers and services; hardware utilities drop monitoring drivers and background services; some media and "booster" programs add virtual devices or network components. When one of those crashes the machine, the blue screen may be coming from the component the installer added, not the windowed program you click.

This matters for two reasons. First, it changes what to roll back: if a utility's background service is the suspect, closing the app won't stop the crash — you need to stop or remove the service or driver. Second, it changes how confident you can be: an app that only runs in user space is a different class of suspect than one that registers a kernel driver, because only the latter can directly cause many stop codes. Before you treat "the new app" as your hypothesis, spend a few minutes finding out which of these layers it actually touched.

You can investigate without guessing. In Device Manager, look for a new device or a driver whose install date matches the app — a freshly appearing "monitoring" or "filter" device is a strong signal. In the driver store (pnputil /enum-drivers), a new .inf/.sys dated to the install is the same signal from the other side. In the Services list, a service you don't recognize that started at the same time is another. If the installer only added an app and a shortcut and nothing at the driver/service layer, then it's a much less likely kernel-level suspect — which is useful information, not a dismissal.

Keep the layers distinct as you reason: application-level (a window you run), system service (a background process that starts with Windows), kernel-level component (a driver or filter that runs in the protected layer), and driver (the specific module that talks to hardware or a subsystem). A crash that only happens while the app is open points at the app layer; a crash that happens even with the app closed points at a service or driver it left behind. That distinction is what turns "I installed X" into a testable, correctly-scoped hypothesis.

Category 4

Rank the suspects by the strength of the evidence

Once you have a list of changes and a stop code, the next move is to rank them — not by how recent they are, but by how much independent evidence connects each one to this crash. The point is to produce an ordered list you can defend, so that when you roll something back you're testing your best-supported idea, not your most memorable one. A ranked list also tells you what to do next if the top choice fails: you already know the runner-up.

Seven factors do most of the ranking work. Proximity: how closely the change precedes the first crash — helpful, but the weakest factor on its own. Subsystem match: does the change touch the same part of the system the stop code points at? A GPU driver change alongside a VIDEO_TDR_FAILURE is a far stronger pairing than the same driver alongside a storage code. Repetition: does the same module or component show up across multiple crashes? One match is a lead; the same match every time is close to a diagnosis. Reliability Monitor: does it log a related failure near the change? Event Viewer: are there corroborating warning/error events (a driver failed to start, a device was disconnected) around the crash time? Safe Mode behavior: does the crash vanish in Safe Mode, which would implicate a third-party driver or service rather than the core OS? And workload specificity: does the crash only happen when a particular device is used, which pins the suspect to that device's driver?

The payoff of ranking is that it forces you to label your confidence honestly. A change can be strong (subsystem matches, the same module repeats, Safe Mode changes the behavior), moderate (it's recent and it touches a plausible area, but there's no corroboration), weak (it's just recent), or a likely coincidence (recent, but it touches nothing the crash implicates and nothing corroborates it). Treating a weak or coincidental change as if it were strong is how people waste hours uninstalling the wrong thing — and how they then conclude, wrongly, that "nothing is wrong." The ranking is what keeps that from happening.

Evidence strength levels for a suspected change, with examples of what counts
ConfidenceWhat it looks likeHow to treat it
StrongSubsystem matches the stop code; the same module repeats across crashes; Safe Mode changes the behavior; corroborating Event Viewer eventsTest this first — it's your primary hypothesis
ModerateRecent change in a plausible area, but no independent corroboration yetTest after the strong candidate, or gather one more piece of evidence
WeakRecent, but touches nothing the crash points atDeprioritize; don't roll back on timing alone
CoincidenceRecent, unrelated subsystem, no corroboration, and other candidates are strongerSet aside; revisit only if every other test fails

Notice what ranking deliberately is not: it's not a rehash of the timeline. The timeline told you what changed and when. Ranking tells you which of those is most worth testing given the crash itself. If two changes are close in time but only one touches the failing subsystem, ranking resolves the tie the timeline couldn't.

Category 5

Choose what to undo first

The selection rule is: roll back the most plausible, reversible, evidence-supported change first. "Most plausible" comes from the ranking; "reversible" keeps you safe; "evidence-supported" keeps you honest. You're not trying to undo the most recent thing, the biggest thing, or the scariest thing — you're trying to run the experiment that, if it works, most cleanly identifies the cause and, if it doesn't, costs you the least.

The right first move depends on your scenario, and the scenarios do lead to different decisions. That's the whole reason to name your scenario before acting — because "roll back a change" is too vague to be useful until you know which change and why. The table below maps the common situations to a defensible first rollback. Where the evidence is genuinely insufficient, the honest answer is in the last row: don't guess, gather one more piece of evidence first.

Common post-update scenarios and the safest, most evidence-supported first rollback for each
ScenarioSafest first rollbackWhy this one first
Windows update onlyUninstall the specific quality update (or, for a feature update within its window, go back to the previous version)It's the only change, and it's a unit you can remove cleanly
Driver update onlyRoll back that one device's driver to the previous versionNarrow, per-device, and directly testable against the workload that uses it
New software onlyUninstall the app and remove the service/driver it addedRemoving only the app leaves the kernel component behind — the usual reason "uninstalling" fails
Windows update + driver updateRoll back the driver first if the stop code points at that device; otherwise the updateThe driver is the narrower, cheaper test; the OS update is the bigger hammer
Windows update + new softwareRoll back whichever touches the failing subsystem; if neither clearly does, uninstall the software firstSoftware is the more easily and completely reversed of the two
Driver update + new softwareRank by subsystem match, then test the higher-ranked; if tied, the driver (it's more likely kernel-level)Keeps the test scoped to the layer most likely to cause the stop code
Multiple changes, weak evidenceDon't roll back yet — add one discriminator (Safe Mode test, faulting module, Reliability Monitor)Reversing a weakly-supported change wastes the experiment and muddies the next one

Two guardrails keep this step from tipping into "undo everything." First, prefer the smallest reversal that tests the hypothesis: rolling back one driver is smaller than uninstalling an OS update, and uninstalling one app is smaller than a reset. Second, prefer the reversal that is easiest to undo the undo — a driver rollback can be re-applied, an app can be reinstalled, but a removed feature update is harder to get back. "Reversible" in the rule means both directions: you can reverse the change, and you can reverse the reversal.

Category 6

Roll back one change at a time

This is the experimental-discipline section, and it's the one that separates a diagnosis from a cleanup. If you uninstall the new app, roll back the driver, and remove the Windows update all in the same sitting, you have run three experiments at once with one observation. If the crash stops, you don't know which of the three did it — so you've "fixed" the machine while learning nothing, and the next crash will start you from zero again. If the crash continues, you've changed three variables and can't tell whether one of them was on the right track. Either way, the multi-change reset destroys the one thing you're trying to produce: a cause.

So each test has a fixed shape: hypothesis → one intervention → reboot and retest → observe → record the result. Write the hypothesis down in one sentence ("the GPU driver update caused the VIDEO_TDR_FAILURE during gaming"), make exactly the one change that tests it, reboot, reproduce the original conditions, and write down what happened. "Retest" is not optional and it's not a single reboot — it's reproducing the conditions that produced the crash. A driver that only fails under load won't reveal itself at the desktop, so the retest has to be the game, the file copy, or whatever the original workload was.

What counts as a successful test is specific, and it's worth defining now because Category 7 builds on it. A test is successful if the original stop code stops recurring under the original conditions over a reasonable observation window — not merely if the machine boots once. A test is unsuccessful if the same crash returns under the same conditions. Everything in between (a different code, a lower frequency, a temporary lull) is a partial result, and it carries its own meaning, which is the next section. The discipline is to treat each of these as data about the hypothesis, not as a binary "fixed / not fixed" that you can only act on one way.

The concrete rollbacks look like this. These are the reversible, per-change moves — each one is a single variable, which is the whole point. (For the deeper, code-level reading of a crash, see the companion crash-dump guide; for reaching a stable state when the machine won't stay on, see the crash-loop and Safe Mode guide.)

Admin prompt systeminfo

Shows the current Windows build and the list of installed updates — your baseline before you change anything.

Admin prompt pnputil /enum-drivers

Lists driver packages and their install dates — how you confirm exactly which driver changed and when.

Admin prompt wusa /uninstall /kb:KB1234567 /norestart

Removes one specific quality update (replace KB1234567 with the real KB). Reversible by re-downloading the update. Not how you remove a feature update.

Driver rollback is per device. In Device Manager, open the device's Properties → Driver tab → Roll Back Driver. It only works if a previous version is stored on the machine — which is exactly why confirming the old version exists (via the driver store) before you rely on it is part of a clean test.

Category 7

What the rollback result actually means

The most under-used part of the method is reading the result correctly, because most people only have two buckets — "it worked" and "it didn't" — and the real results are more informative than that. A rollback's outcome is evidence about your hypothesis, and each outcome supports a different conclusion. Getting this right is what lets one experiment answer a question instead of just changing the machine.

Start with the two endpoints and their honest limits. If the BSOD disappears, that strengthens the hypothesis — the change and the crash are linked — but it does not by itself prove exclusive causation, because reverting a change can also stop a crash that was only partly caused by it (the change was a trigger on top of something else). If the BSOD continues unchanged, that weakens the hypothesis, but it does not automatically prove the change was irrelevant — the real cause might be a different change, or a component this one merely exposed. "Weaker" and "irrelevant" are not the same word, and conflating them is how a real cause gets written off too early.

The middle outcomes are where the real information is. A different BSOD appearing after a rollback often means you removed a trigger but uncovered the next layer — progress, not failure. A crash whose frequency drops but doesn't stop suggests the change contributed but didn't cause everything. A machine that's stable only temporarily (fine for an hour, then the original code returns) points at something cumulative — a slowly degrading module, a file that gets corrupted over time, thermal buildup — rather than a one-shot trigger. And a crash that changes under a different workload tells you the failure is workload-dependent, which sharpens which driver or component to suspect. Each of these is a distinct, actionable result, not noise.

Possible rollback outcomes and what each suggests about the hypothesis
Rollback resultWhat it suggestsSensible next move
BSOD disappears under the original workloadHypothesis strongly supported (change and crash are linked)Confirm over a real observation window, then keep the rollback in place
BSOD frequency decreases but doesn't stopChange contributed; another factor remainsKeep the rollback, re-rank the remaining suspects
A different BSOD appearsA trigger removed; a deeper layer is now exposedTreat the new code as the next clue; re-run attribution on it
Stable only for a short time, then the original code returnsCumulative cause (degradation, corruption, thermal) rather than a one-shot triggerShift toward the hardware/storage/thermal guides and crash-dump analysis
BSOD continues unchangedHypothesis weakened — not disprovenMove to the next-ranked suspect; don't discard this change's evidence
Crash changes under a different workloadFailure is workload- and device-dependentPin the suspect to the driver of the device the failing workload uses

The habit to build is to write the result next to the hypothesis before you do anything else. "Rolled back the GPU driver → VIDEO_TDR_FAILURE still appeared in the same game" is a complete, reusable observation. "Tried rolling stuff back and it's still doing it" is not. The first sentence is evidence you can carry into the next test; the second is a feeling.

Category 8

When two changes are interdependent

The clean cases — one update, one driver, one app — are the easy part. Real machines usually change in pairs or chains: a Windows update followed by a GPU driver, an OS update followed by new security software, a driver update followed by a hardware utility, or a single installer that quietly adds a driver. When two changes are coupled, rolling back "one" can be ambiguous, and a naive single revert can leave the pair half-reverted — which is its own source of confusion. The goal here is to sequence the reverts so each step still tests a single, nameable variable.

The key insight is that interdependence usually has a direction, and the direction tells you the order. A Windows update and a driver that shipped with it are coupled: reverting just the driver while the new OS stays can leave a mismatch, and reverting just the OS while the new driver stays can do the same. In that case the honest unit of rollback is often both together, and your hypothesis should be phrased as "the update-and-driver pair," tested as one intervention. But a driver update that arrived after an OS update, from a separate vendor installer, is a distinct change even if it's close in time — and that one you can and should test on its own before touching the OS.

A controlled sequence handles the coupled cases without blind reversion. Take the "Windows update then GPU driver" example. Step one: roll back the driver only and retest — if the crash stops, the driver was the cause and you're done, having left the OS update in place (the smaller win). Step two: if the crash continues, roll back the OS update and retest — if it stops now, the OS change was the cause. Step three: if it still continues, revert both together and retest — if it stops only now, the two were genuinely coupled and neither alone was sufficient. Each step changes one thing, each observation is attributable, and you never end up in the "I undid a bunch of stuff and it works but I have no idea why" state.

For the "software that installs a driver" case, the interdependence is inside a single install: the app and its driver are one unit. The correct single intervention is to remove the unit completely — the app and the driver/service it registered — not just the app, because a leftover driver is precisely the thing that keeps crashing after "uninstalling." Checking the driver store and Services for what the installer left behind (as in Category 3) is what makes this a clean single test instead of a half-revert that mysteriously fails.

Category 9

When the timeline points at the wrong suspect

Chronology is the tool that fails most quietly, so it deserves its own section. A change can sit at the top of the timeline and still be innocent, and the real cause can be sitting further back — or not be a "change" at all. The three failure modes to recognize are trigger versus root cause versus coincidental timing, and they look identical on a timeline until you test them.

A trigger is a change that makes an existing weakness finally fail. A driver update doesn't "cause" bad RAM; it changes timing or memory pressure just enough that a marginal module that survived for months now errors on a given day. The timeline will point at the driver because the driver is the newest change, but rolling back the driver will only delay the crashes — the RAM was always the root cause. A coincidental case is even cleaner: an app installed the same afternoon an unrelated power supply started degrading. The two are close in time with no causal connection at all, and no amount of rollback of the app will help. The tell in both cases is that the rollback result is temporary or absent even though the change was perfectly timed.

So the timeline is a map of where to look, not a map of what's guilty — and the only way to separate a trigger from a root cause from a coincidence is the reversible test plus an honest reading of the result (Category 7). If rolling back the well-timed change gives you a temporary lull instead of a clean fix, that's your signal that you've found a trigger, and the root cause is deeper: usually hardware (a failing module, a degrading drive, a power or thermal limit) or a pre-existing component the update merely exposed. At that point the productive next step stops being "undo more changes" and starts being "test the hardware," which is the next section.

The practical habit is to never let a timeline do the concluding. Let it rank and let it focus, but require a test result before you call anything the cause. "The update was the last change, so the update is the cause" is the exact sentence this whole method exists to prevent. The timeline says "the update is a candidate"; only the reversible test and its result say "the update is the cause" — and even then, a temporary result should make you keep looking.

Category 10

When not to roll back anything

The least comfortable conclusion in change attribution is "the timeline doesn't support a rollback as the next experiment" — and it's the one that saves the most wasted effort. If your ranked list has no strongly-supported software change, or if every rollback you've tried has returned a temporary or absent result, then rolling back more changes is not the next best experiment. It's just more churn that changes variables you can't attribute. At that point the evidence is pointing somewhere else, and the productive move is to follow it.

Where the evidence usually points instead depends on what the result pattern and the stop code say. A crash that's workload- and thermal-dependent (only under load, machine runs hot) points at a cooling or power investigation, not an update. A crash with memory-area codes that no driver rollback fixes points at a proper memory test. A crash that's cumulative (stable for a while, then the same code returns) or a storage/file-system code points at disk health and file-system checks. A crash that only shows a repeating faulting module in the dump but resists every software rollback points at reading the crash evidence more carefully. And a machine that crashes even in Safe Mode, with no supported software change is a strong signal to escalate to hardware or professional support rather than keep rolling back software that isn't the cause.

The framing that keeps this from becoming a generic hardware article: you're not switching topics, you're following the same evidence to its correct destination. The question was always "what's the next best experiment?" For a while the answer was "roll back this change." When the rollback results stop supporting that, the honest answer becomes "the next best experiment is a memory test / a disk health check / a thermal check / a crash-dump read / a professional look." The method didn't change; the evidence did. These are the guides for exactly that next experiment: memory-related BSODs, storage and file-system BSODs, overheating and hardware instability, and reading the crash dumps.

One caution runs through all of it: "not a rollback" is not the same as "give up." It's a specific, evidence-based decision that the software-change hypothesis has been tested and not supported, so the search moves to the next most-supported hypothesis. You make that decision because of the timeline and the rollback results, not instead of them. That's the difference between a reasoned escalation and a frustrated one — and it's what makes the whole attribution method worth doing in the first place.

Category 11

Create a BSOD evidence packet

Everything above produces observations, and the single most useful thing you can do with them is write them down in a consistent packet. A packet is a short, dated record of the machine, the changes, the crash, and every test you've run with its result. It does two jobs: it keeps you from losing the thread across several reboots and sessions, and it lets anyone else — a friend, a forum, a technician — reason about the problem in five minutes instead of re-asking every question. The better the packet, the faster the next step is, whoever takes it.

The fields below are deliberately the ones this method actually uses: the machine identity, the timeline, the ranked suspects, and a log of each rollback with its result. Fill in what you know, mark what you don't as "unknown," and don't skip the rollback log — that log is where the real diagnosis lives, because it's the record of which hypotheses you tested and what each one told you. A packet with a full rollback log is far more valuable than a packet with a perfect timeline but no tests, because the tests are the evidence.

BSOD EVIDENCE PACKET
===================

Machine
  Device model / build:
  Windows version & build:
  BIOS / firmware version & date:

Timeline (most recent last)
  Last known-good state (what it did fine, when):
  Change 1 — type, what, date/time:
  Change 2 — type, what, date/time:
  Change 3 — type, what, date/time:
  First BSOD — date/time, what you were doing:
  Repeat BSODs — how often, when:

Crash
  Stop code:
  Bugcheck code (hex), if shown:
  Reported / faulting module, if available:
  Does it happen in Safe Mode? (yes / no / not tested)
  Workload it happens under (gaming, file copy, idle, random):

Ranked suspects (strongest first) and why
  1. (change) — evidence:
  2. (change) — evidence:
  3. (change) — evidence:

Rollback log (one per line)
  [date] Rolled back: ___  →  Result: ___  →  Next: ___
  [date] Rolled back: ___  →  Result: ___  →  Next: ___

Reliability Monitor / Event Viewer notes
  (any related failure or warning events, with times)

Decision
  What I'm testing next, and the one sentence of why:
Keep one packet per machine and add a rollback line each time you test something. After a few lines it usually becomes obvious which hypothesis the evidence supports — and that packet is exactly what you'd hand to a technician if you escalate.

Category 12

The full decision tree

The whole method in ten steps, in order. Work top to bottom; each step's output is the next step's input. Tick them as you go — your progress is saved in this browser.

ticks are saved in this browser only

FAQ

Post-update BSOD questions

My PC blue-screened right after a Windows update. Should I just uninstall the update?

Not automatically. A single update session can change the operating system and several drivers at once, and the newest change is not always the cause. Build a timeline, see which subsystem the crash points at, and roll back the specific change the evidence supports — which may be a driver rather than the update itself.

How do I know whether a driver or a Windows update caused the crash?

Compare the dates. Windows Update history shows the OS and quality-update dates; Device Manager shows each driver's version and date installed; the driver store (pnputil /enum-drivers) shows when driver packages landed. If a driver date matches the crash window more closely than the OS build, the driver is the stronger suspect.

I installed a new program just before the BSOD. Is it definitely the cause?

Not necessarily. Some installers add kernel drivers, filter drivers, services, or virtual devices that sit deeper than the app itself. Investigate what the installer actually changed before assuming the application is responsible, and remember that "installed last" is timing, not proof.

What if I rolled back the change and it still crashes?

A failed rollback weakens that hypothesis but doesn't prove the change was irrelevant — the real cause may be a different change, a pre-existing hardware problem, or a component the update merely exposed. Record the result, return to your ranked suspects, and test the next most defensible change.

How long should I test after a rollback before calling it fixed?

Long enough to reproduce the original conditions. If the crash happened under a specific workload, run that workload; if it happened randomly, use the machine normally over a day or two. A fix is confirmed when the same stop code stops recurring, not when a single reboot succeeds.

Should I roll back all my recent changes at once?

No. Reversing several changes at once destroys diagnostic clarity — if the crash stops, you won't know which reversal fixed it, and if it continues, you've changed too many variables to reason about. Roll back one evidence-supported change, retest, and record the result.