I survived a scary Blue Screen of Death, the dreaded Kernel Security Check Failure. Here's how.

Kernel_Security_Check_Failure
(Image credit: Tom's Hardware)

Blue is one of my favorite colors, but when it takes over my entire screen, I start to panic . . . and for good reason. The Windows Blue Screen of Death (BSOD) appears suddenly when your computer crashes and leaves you with two gripping questions: "why did this happen" and "will it happen again?"

Last week, my computer hit me with the blue screen of death shown at the top of this page, a Kernel Security Check Failure, and my monitor wasn't the only one wearing a frown. I got this BSOD twice, both times when I started playing a video in my browser. 

Latest Videos FromTom's Hardware
Avram Piltch
Managing Editor: Special Projects

Avram Piltch is Managing Editor: Special Projects. When he's not playing with the latest gadgets at work or putting on VR helmets at trade shows, you'll find him rooting his phone, taking apart his PC, or coding plugins. With his technical knowledge and passion for testing, Avram developed many real-world benchmarks, including our laptop battery test.

  • PEnns
    Thank you Avram!

    Although I believe I never had a single BSOD (pure luck?), it's good to have this article ready, just in case!
    Reply
  • gardenman
    From the article:
    Checking driver dates is a little more difficult because I don't know of any Windows menu that makes it easy to see all drive installs sorted by date.

    The following is a log file of driver installs and dates:
    C:\Windows\inf\setupapi.dev.log
    Read from the bottom up.

    In the log file you will find the following 4 example lines for each driver:
    >>> >>> Section start 2024/01/17 23:48:30.091
    <<< Section end 2024/01/17 23:48:30.617
    <<< This shows that I installed a VirtualBox (VBoxNetLwf) driver about 3 days ago.

    After a little research, I determined you can display only those lines (per driver) using the following in Command Prompt:
    findstr "<<< >>>" C:\Windows\inf\setupapi.dev.log
    And if you want to save only those lines to a text file, simply direct the output to a file like this:
    findstr "<<< >>>" C:\Windows\inf\setupapi.dev.log > %userprofile%\Desktop\DriverInstalls.txtThis will create DriverInstalls.txt on your desktop. Read from the bottom up.
    Reply
  • yeyibi
    What I hate from sfc /scannow and DISM, is that for every problem you have, somebody at microsoft tells you to run those commands, even when they do not address the problem at all, and them MS considers the problem "solved", and closed.
    Then Google makes it the default answer, blocking real solutions.

    It's like some bot or lazy MS employee uses it to pretend that he did his work.
    Reply
  • bit_user
    Ntoskrnl, is a big part of the OS but apparently it fails when there are memory issues, which could be due to a driver or due to a physical fault in memory.
    You should do an overnight memtest run, before you dismiss bad RAM as a possible cause.

    That makes a lot more sense to me than simply reinstalling the driver, as you admit you still don't understand how doing so would actually fix the problem.
    Reply
  • Alvar "Miles" Udell
    https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x139--kernel-security-check-failure
    Common causes of list entry corruption include:

    A driver has corrupted a kernel synchronization object, such as a KEVENT (for example double initializing a KEVENT while a thread was still waiting on that same KEVENT, or allowing a stack-based KEVENT to go out of scope while another thread was using that KEVENT). This type of bug check typically occurs in nt!Ke* or nt!Ki* code. It can happen when a thread finishes waiting on a synchronization object or when code attempts to put a synchronization object in the signaled state. Usually, the synchronization object being signaled is the one that has been corrupted. Sometimes, Driver Verifier with special pool can help track down the culprit (if the corrupted synchronization object is in a pool block that has already been freed).
    A driver has corrupted a periodic KTIMER. This type of bug check typically occurs in nt!Ke* or nt!Ki* code and involves signaling a timer, or inserting or removing a timer from a timer table. The timer being manipulated may be the corrupted one, but it might be necessary to inspect the timer table with !timer (or manually walking the timer list links) to identify which timer has been corrupted. Sometimes, Driver Verifier with special pool can help track down the culprit (if the corrupted KTIMER is in a pool block that has already been freed).
    A driver has mismanaged an internal LIST_ENTRY-style linked list. A typical example would be calling RemoveEntryList twice on the same list entry without reinserting the list entry between the two RemoveEntryList calls. Other variations are possible, such as double inserting an entry into the same list.
    A driver has freed a data structure that contains a LIST_ENTRY without removing the data structure from its corresponding list, causing corruption to be detected later when the list is examined after the old pool block has been reused.
    A driver has used a LIST_ENTRY-style list in a concurrent fashion without proper synchronization, resulting in a torn update to the list.

    Since this is a driver-linked BSOD, I think the first thing I'd do is check for updated GPU drivers since the problem ocurred twice when the GPU was in use, and if none were available, then reinstall the current GPU drivers if they had functioned properly for a time since files can get corrupted relatively easily.

    For nVidia GPUs this is an easy process of clicking "reinstall driver" in the GeForce Experience's Driver tab. DDU not required.
    Reply
  • bit_user
    Alvar Miles Udell said:
    Since this is a driver-linked BSOD, I think the first thing I'd do is check for updated GPU drivers since the problem ocurred twice when the GPU was in use,
    He said the reinstalled driver was the same version as before - no update was available.

    Alvar Miles Udell said:
    if none were available, then reinstall the current GPU drivers if they had functioned properly for a time since files can get corrupted relatively easily.
    This doesn't make sense to me. You should not have files getting randomly corrupted. If so, then you've got bigger problems to troubleshoot & solve.
    Reply
  • Gillerer
    In order to "survive" any BSOD, all you have to do is not rely on Windows as the OS for your life support equipment...
    Reply
  • Alvar "Miles" Udell
    bit_user said:
    He said the reinstalled driver was the same version as before - no update was available.


    This doesn't make sense to me. You should not have files getting randomly corrupted. If so, then you've got bigger problems to troubleshoot & solve.

    It happens, as it happened with the author of this article who is TH's editor-in-chief who is presumably not overclocking or doing questionable things, uses reputable hardware and not bargain basement no name brand components, and takes proper precautions against power surges with a line-interactive UPS.

    It could be caused by a hardware issue or situation that will never happen again, or it could have been caused by playing a video in an internet browser, presumably Chrome or Firefox given his abject hatred of Edge, leading to issues that would be impossible to replicate but a reinstallation of the drivers cleared up, or it could just be Windows 10 being Windows 10 or even an issue with the initial driver installation that didn't rear its head until now.
    Reply
  • bit_user
    Alvar Miles Udell said:
    It happens, as it happened with the author of this article who is TH's editor-in-chief who is presumably not overclocking or doing questionable things,
    I'm not convinced. He said he upgraded the driver and then had two bluescreens less than a month later. How long did he wait, after reinstalling the driver, before declaring victory? Could it be that he just hasn't had enough runtime to hit the next bluescreen?

    Alvar Miles Udell said:
    uses reputable hardware and not bargain basement no name brand components, and takes proper precautions against power surges with a line-interactive UPS.
    That doesn't rule out the possibility of bad RAM. I've seen Dell-branded server RAM go bad, plenty enough times to know that it can happen in non- "bargain basement" components. Also, plenty of other memory, which tells me it's not something specific to Dell server memory.
    Reply
  • Alvar "Miles" Udell
    These are questions you should ask him, ambassador.
    Reply