0x00000046: Fix It by Trigger, Dump, and Event Clues
0x00000046 (DEREF_UNKNOWN_LOGON_SESSION) usually means Windows dereferenced a logon-session object it can’t track. I sort these crashes by trigger context first, sign-in, screen lock and return, RDP, VPN, or security-agent activity, before I touch drivers or policy. Guessing here can turn a one-off BSOD into repeat boot loops, broken remote access, and hours spent undoing bad rollbacks. This guide maps the symptom to the right branch for drivers, security software, and logon or remote-session policy, with checks that fit Windows 10 and 11.
This guide is part of our Windows BSOD stop codes: full list and fixes series.
Which evidence should you capture first for 0x00000046?
Capture the timeline before you change anything: the exact trigger, the last change, whether Safe Mode works, and what Windows logged around the crash.
Write down the trigger before you touch drivers or apps
- Write the exact moment of failure: boot, sign-in, sign-out, lock and return, sleep/wake, RDP connect, or random idle.
- Note the last change before the first BSOD: a driver update, security product install, Windows update, domain policy change, or new remote-access setup.
- Test whether Safe Mode works: Settings > System > Recovery > Advanced startup on Windows 11, or Settings > Update & Security > Recovery > Advanced startup on Windows 10. (easyprotools.com)
Save the evidence Windows already has
- Check for dumps in
C:\Windows\MinidumpandC:\Windows\MEMORY.DMP. Copy them elsewhere before making changes. (Microsoft Learn) (Microsoft Learn) - Open Event Viewer: press Win + R, type
eventvwr.msc, then review Windows Logs > System around the crash time. - Open Reliability Monitor: press Win + R, type perfmon /rel, then record the day the failures began and any install events just before them.
- Save a short note with: exact stop code text, trigger, account used, whether the machine is domain-joined, and whether the crash happens at the console or only over RDP.
What 0x00000046 will not tell you on its own
The stop code value is 0x00000046 and the bug check is listed as DEREF_UNKNOWN_LOGON_SESSION (per Microsoft support). It shows up very rarely, so the code by itself is too thin to name a bad driver, bad policy, or damaged Windows files. The dump, event timing, and recent-change history do that work. (Microsoft Learn)
According to Bug Check 0x46 – Windows drivers – Microsoft Learn — The bug check value is 0x00000046. (source)
Match the crash context to the next step

Use the crash context as your first filter. The right first move after a sign-out crash differs from the right first move after a new antivirus rollout or a storage-driver update, so the table below keeps the path evidence-first and low-risk.
One-page triage table
| Crash context | First action | Second action | Evidence to capture before changing anything |
|---|---|---|---|
| At logon or logout | Test whether it happens at console sign-in, sign-out, or both | Test one local account and one domain account, then note which path crashes | Dump path, Event Viewer System log at crash time, Reliability Monitor date, exact sign-in or sign-out timing |
| Only over RDP or on a domain-joined PC | Sign in at the console instead of RDP and compare behavior | Check Local Security Policy, Group Policy history, and Remote Desktop settings changed since the first BSOD | Dump, System log, whether console works, account type used, recent policy or software deployment history |
| Right after security software install or update | Use the vendor uninstall path or vendor cleanup tool, then reboot | If the BSOD stops, reinstall the current vendor build or vendor hotfix and retest | Dump, install date, exact product name and version, whether the crash started immediately after install/update |
| Right after a driver update | Roll back that driver in Device Manager | If rollback is unavailable, install the current OEM or device-vendor driver package | Dump, Device Manager device name, driver date/version, Reliability Monitor entry showing the update |
| Random boot crash with no obvious trigger | Boot Safe Mode, confirm whether the crash still appears there, then run sfc /scannow | Run DISM /Online /Cleanup-Image /RestoreHealth, reboot, then use a clean boot and test the same sign-in or startup path that caused the BSOD | Dump, whether Safe Mode works, SFC/DISM results, Event Viewer crash timing |
Likely causes, ranked by what to check first

Start with the thing that changed nearest to the first crash. In practice, I get the best results from this order: recently changed kernel-mode drivers, recently changed security software with kernel components, Windows file or component-store damage, then session-specific conditions on domain-joined or RDP-used PCs.
Ranked troubleshooting order
- First: a recently changed kernel-mode driver, especially when the BSOD began right after an update or device install.
- Next: security software, endpoint protection, or monitoring tools if the crash began right after their install or update.
- Then: run
sfc /scannowto check Windows system files, then runDISM /Online /Cleanup-Image /RestoreHealthto repair the component store if SFC finds corruption or the machine still crashes with no driver lead. - After that: use a clean boot to strip startup and third-party services out of the test, then compare console sign-in, sign-out, RDP, and domain-account behavior one path at a time.
Keep programmer context separate from repair steps
At kernel level, this bug check points to a session-reference problem in code that runs in kernel mode. For end-user repair, I translate that into a narrower workflow: tie the crash to a trigger, preserve the dump, then test the changed driver, security product, or session path one at a time.
Is 0x00000046 a driver problem or a Windows system file problem?

Start with the driver branch if the first crash followed a driver change, new hardware, or an OEM utility install. Use the Windows file-repair branch first only when the machine crashes with no clear change, Safe Mode still works, or driver rollback does nothing.
If that didn’t work, try the driver branch next
- Open Device Manager: press Win + X > Device Manager.
- Find the device tied to the recent change: storage, network, graphics, chipset, or a newly added device.
- Right-click the device > Properties > Driver. If available, choose Roll Back Driver if the issue began after an update; this is the cleanest first move.
- If rollback is unavailable, choose Update Driver and install the current package from the PC maker or device maker. Avoid blanket “update everything” passes.
- If the crash began after an OEM utility install, remove that utility from Settings > Apps > Installed apps on Windows 11, or Settings > Apps > Apps & features on Windows 10, then retest.
How to use Driver Verifier without trapping the PC
- Open Command Prompt as administrator.
- Run verifier, choose Create standard settings, then select Automatically select unsigned drivers or manually choose recent non-Microsoft drivers only.
- Reboot and reproduce the crash. HashRoot recommends enabling Driver Verifier to identify faulty drivers, but do not run it against every driver on a production machine.
- If the machine enters repeated crashes, boot Safe Mode or Windows Recovery Environment, open Command Prompt, and run verifier /reset. (Microsoft Learn)
- After disabling Verifier, save the new dump and compare the blamed driver with the recent-change list before making another change.
What if Driver Verifier keeps crashing the PC?
- Enter recovery: power on, interrupt boot repeatedly until Preparing Automatic Repair appears, then choose Advanced options.
- Go to Troubleshoot > Advanced options > Startup Settings > Restart, then choose Safe Mode.
- Open Command Prompt as administrator and run verifier /reset.
- Reboot normally. If still unbootable, preserve the dump and timing notes first, then use System Restore from Troubleshoot > Advanced options > System Restore.
Can antivirus or endpoint security software cause 0x00000046?
Yes, but only as a context-driven suspect. Treat security software as the first branch only when the BSOD started right after an install, upgrade, policy push, or sensor change, and keep the test temporary: uninstall cleanly, reboot, confirm the result, then rebuild with the vendor’s current package.
Run a clean security-software test
- Open Settings > Apps > Installed apps on Windows 11, or Settings > Apps > Apps & features on Windows 10.
- Identify products that install kernel components: antivirus, endpoint protection, device-control tools, and monitoring agents. Focus on products changed nearest to the first crash.
- Use the product’s normal uninstall path first. If the vendor supplies a cleanup tool, use that vendor path next, then reboot.
- Retest the original trigger: sign-in, sign-out, boot, or RDP. If the BSOD stops, reinstall the current vendor build or apply the vendor hotfix, then retest immediately.
- If the machine is domain-managed, record the software name, version, deployment time, and result of the uninstall test for internal IT before the product is redeployed.
What evidence matters here
The useful proof is timing: did the first BSOD begin after the product install or update, and did it stop after a vendor-approved uninstall? That is far stronger than guessing from the code name alone. Any link to identity tools, VPN components, or monitoring agents should stay tied to that sequence.
What if 0x00000046 happens during logon, logout, or Remote Desktop?
Compare session paths instead of assuming policy damage. Test console sign-in versus RDP, test one local account and one domain account, then review Local Security Policy, Group Policy history, and Remote Desktop settings only if the crash follows one path and not the others.
Console sign-in versus RDP
- If RDP is the only trigger, sign in at the physical console and repeat the same account action.
- If console sign-in works, note that the crash is session-path specific and save the dump before changing policy.
- Open Settings > System > Remote Desktop on Windows 11, or Settings > System > Remote Desktop on Windows 10, and confirm whether Remote Desktop was recently enabled or changed.
Local account versus domain account
- Create or use one local administrator account if available.
- Test the same trigger with one local account and one domain account.
- Record which account type crashes, and whether it happens at sign-in, sign-out, or both. That note is often more useful than another blind driver reinstall.
Exact policy and session checks for domain-joined systems
- Open Local Security Policy: press Win + R, type
secpol.msc. - Review Local Policies > User Rights Assignment for recent changes affecting sign-in paths, especially rights tied to local logon and Remote Desktop use.
- Open
gpedit.mscif local policy is used, or check recent applied Group Policy changes from internal IT if the machine is domain-managed. - Check System Properties > Remote and confirm who is allowed to connect through Remote Desktop.
- If the PC is domain-joined or RDP-heavy and only that path fails, escalate with the dump, policy-change timing, and account-test results instead of making broad security-policy edits.
Should you run SFC, DISM, clean boot, or System Restore?
The article suggests running sfc /scannow before DISM /Online /Cleanup-Image /RestoreHealth, after first noting the likely trigger context. Run SFC first for system file repair, DISM next for component-store repair, then use a clean boot to isolate third-party software. Use System Restore when the first BSOD clearly followed a recent change.
Repair Windows files and the component store
- Open Command Prompt as administrator.
- Run
sfc /scannow. HashRoot advises this step for system file repair. - After SFC finishes, run
DISM /Online /Cleanup-Image /RestoreHealth. HashRoot also advises this command for component-store repair. - Reboot and retest the original trigger, not a different one.
Use a clean boot the right way
- Press Win + R, type msconfig, then open System Configuration.
- On the Services tab, check Hide all Microsoft services, then choose Disable all.
- Open the Startup tab and disable startup items through Task Manager.
- Reboot and test the same crash trigger. If the BSOD stops, re-enable items in small groups until the fault returns.
System Restore and the OEM note for Asus PCs
- Open Control Panel > Recovery > Open System Restore, or enter it from Advanced startup if Windows will not boot normally.
- Choose a restore point from before the first BSOD.
- On Asus systems, treat the case like any other OEM case: focus on recent chipset, storage, network, and OEM utility changes rather than assuming an Asus-specific cause.
Still not working?
Stop changing variables once the basics are done and the crash is still reproducible. At that point, the fastest route is a clean handoff with the dump, trigger notes, recent-change history, account-test results, and Driver Verifier outcome, because those pieces let IT or a vendor reproduce the failure without undoing your work.
If that didn’t work, use this escalation ladder
- If the machine boots only in Safe Mode, copy
C:\Windows\MinidumporC:\Windows\MEMORY.DMPoff the PC first. - If a single driver rollback, SFC, DISM, clean boot, and the security-software test did not change the symptom, stop adding new variables.
- For home PCs, use System Restore if a clear restore point exists before the first crash.
- For domain-joined or RDP-used PCs, send internal IT or the software vendor: dump file, Event Viewer time, Reliability Monitor screenshot or notes, exact trigger, local-versus-domain account result, and whether verifier /reset was needed.
- If Windows remains unbootable after rollback attempts, use recovery options before considering a reset. Preserve the dump first.
Prevention
Keep a simple change log for drivers, OEM tools, security agents, and remote-access changes. This stop code appears very infrequently, so the best prevention step is being able to tie the first BSOD to the exact update, install, or policy push that happened just before it.
Frequently asked questions
What does stop code 0x00000046 mean in Windows?
The code itself identifies a specific bug check value and name, but it does not name the bad driver or policy by itself. The practical takeaway is to capture the dump, note the trigger timing, and sort the case by driver change, security-software change, or session path before repairing anything.
Which drivers can trigger the DEREF_UNKNOWN_LOGON_SESSION bug check?
The stop code does not name a driver family on its own. The best suspects are the drivers changed nearest to the first crash, especially storage, network, graphics, chipset, or OEM packages, because those are easy to confirm or dismiss through Device Manager rollback and dump timing.
How do I use Driver Verifier for a 0x00000046 blue screen?
Run verifier from an elevated Command Prompt, choose Create standard settings, and target recent non-Microsoft or unsigned drivers rather than every driver. Reboot to reproduce the crash, then disable it with verifier /reset from Safe Mode or recovery if the PC starts looping.
Should I run SFC and DISM for stop code 0x00000046?
Yes, after the trigger is documented. Run sfc /scannow first to repair Windows system files, then run DISM /Online /Cleanup-Image /RestoreHealth to repair the component store. If both complete cleanly and the crash remains, move to clean boot or the driver branch.
Is 0x00000046 common on Windows 10 or Windows 11?
No. It appears very infrequently, which is why broad assumptions usually waste time. The same repair logic fits both Windows 10 and Windows 11: preserve the dump, record the trigger, test the nearest recent change first, and only then branch into drivers, security software, or session checks.






