Windows error 0x000000C4, 196

Detailed Error Information


MessageThe operating system cannot run this application program.
Declared inwinerror.h

This appears to be a raw Win32 error. More information may be available in error 0x800700C4.


This is a Blue Screen of Death stop code. More information is available in the Knowledge Base article Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION.

HRESULT analysis[3]

This is probably not the correct interpretation of this error. The Win32 error above is more likely to indicate the actual problem.

This code indicates success, rather than an error. This may not be the correct interpretation of this code, or possibly the program is handling errors incorrectly.

Reserved (R)false
Reserved (X)false
FacilityCode0 (0x000)
DescriptionThe default facility code.[3][1]
Error Code196 (0x00c4)

Possible solutions


Virtualbox gives Error code: 0x000000C4 with Windows 8.1 or 2012


This solution fixed the problem for me:

You need to set a parameter in virtualbox to enable a certain CPU instruction. [vmname] should be replaced with the name of the affected VM without square brackets.


"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata [vmname] VBoxInternal/CPUM/CMPXCHG16B 1

Mac, Linux:

VBoxManage setextradata [vmname] VBoxInternal/CPUM/CMPXCHG16B 1
answered on Super User Mar 17, 2014 by Console • edited Oct 29, 2014 by raacer

RStudio crashes when reading mzML file, R terminal doesn't


When running this with a version of R compiled with sanitizers, I see:

> source("msdata.R", echo = TRUE)

> library(mzR)
Loading required package: Rcpp

> library(msdata)

> mzxml <- system.file("threonine/threonine_i2_e35_pH_tree.mzXML",
+                      package = "msdata")

> aa <- openMSfile(mzxml) # this works
ramp.cpp:1197:34: runtime error: index -1 out of bounds for type 'char [513]'
SUMMARY: AddressSanitizer: undefined-behavior ramp.cpp:1197:34 in

> mzml <- system.file("microtofq/MM8.mzML", package = "msdata")

> bb <- openMSfile(mzml) # this crashes R, but only in RStudio

In particular, this bit:

> aa <- openMSfile(mzxml) # this works
ramp.cpp:1197:34: runtime error: index -1 out of bounds for type 'char [513]'
SUMMARY: AddressSanitizer: undefined-behavior ramp.cpp:1197:34 in

implies there may be something going wrong with the openMSfile() function -- it appears to be attempting to read data at an invalid offset. I would file this issue with the mzR maintainers.

> sessionInfo()
R Under development (unstable) (2017-01-17 r72002)
Platform: x86_64-apple-darwin16.3.0 (64-bit)
Running under: macOS Sierra 10.12.2

[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] msdata_0.15.0        mzR_2.9.3            Rcpp_0.12.9
[4] testthat_1.0.2       rmarkdown_1.3        knitr_1.15.1
[7] roxygen2_5.0.1       devtools_1.12.0.9000

loaded via a namespace (and not attached):
 [1] magrittr_1.5        BiocGenerics_0.21.3 pkgload_0.0.0.9000
 [4] R6_2.2.0            stringr_1.1.0       tools_3.4.0
 [7] pkgbuild_0.0.0.9000 parallel_3.4.0      Biobase_2.35.0
[10] withr_1.0.2         htmltools_0.3.5     ProtGenerics_1.7.0
[13] rprojroot_1.2       digest_0.6.11       crayon_1.3.2
[16] codetools_0.2-15    memoise_1.0.0       evaluate_0.10
[19] stringi_1.1.2       compiler_3.4.0      backports_1.0.5

EDIT: Here's the configure call used to build R; the same compiler + flags are used for all built packages as well. (Extracted from R.home("etc/Makeconf"))

# R was configured using the following call
# (not including env. vars and site configuration)
# configure  '--with-blas=-L/usr/local/opt/openblas/lib -lopenblas' '--with-lapack=-L/usr/local/opt/lapack/lib -llapack' '--with-cairo' '--disable-R-framework' '--enable-R-shlib' '--with-readline' '--enable-R-profiling' '--enable-memory-profiling' '--with-valgrind-instrumentation=2' '--without-internal-tzcode' '--prefix=/Users/kevin/r/r-devel-sanitizers' 'PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig'

CC = clang-3.9 -std=gnu99 -fsanitize=address,undefined -fno-omit-frame-pointer -fno-sanitize=float-divide-by-zero
CXX = clang++-3.9 -fsanitize=address,undefined -fno-omit-frame-pointer -fno-sanitize=float-divide-by-zero 

EDIT V2: Given the lldb stack trace, it looks like the culprit may indeed be a clash between Boost versions (the bundled version used by RStudio vs. the version used by mzR). Note that mzR is now inadvertently calling the Boost routines in the rsession executable, when it likely intends to call its own bundled version.

answered on Stack Overflow Jan 19, 2017 by Kevin Ushey • edited Jan 21, 2017 by Kevin Ushey

Data Abort on A20 SoC


The most likely answer here is that you aren't building a bare metal application correctly. Please look at the hello_world example in U-Boot under examples/standalone for how to most importantly link an application. You may wish to start out by calling some of the exported functions just to confirm that you've gotten over these hurdles before you move on to whacking the hardware directly.

answered on Stack Overflow Aug 11, 2016 by Tom Rini

Page Heap doesn't record useful stack infomation?


Thanks to @Marc Sherman for pointing out in the comments that I should check out the real allocation stack trace.

As already edited into the question, VC80(VS2005) is the problem here, as it's CRT has FPO enabled, as seen in the stack trace:

MSVCR80!malloc+0x7a (FPO: [1,0,0]) (CONV: cdecl) 
MFC80U!operator new+0x2f (FPO: [Uses EBP] [1,0,0]) (CONV: cdecl)

Now, having an anchor to search, we find the following:

Why does every heap trace in UMDH get stuck at “malloc”?

Adding a few quotes:

In particular, it would appear that the default malloc implementation on the static link CRT on Visual C++ 2005 not only doesn’t use a frame pointer, but it trashes ebp as a scratch register ...

What does this all mean? Well, anything using malloc that’s built with Visual C++ 2005 won’t be diagnosable with UMDH or anything else that relies on ebp-based stack traces, at least not on x86 builds.

There is also a reply in the comments that's got nice info:

Mark Roberts [MSFT] says: February 25, 2008 at 3:03 pm


Enabling FPO for the 8.0 CRT was not deliberate. The Visual Studio 2008 CRT (9.0) does NOT have FPO enabled, and UMDH should function normally.

For 8.0, an alternative to UMDH would be to use LeakDiag. LeakDiag will actually instrument memory allocators to obtain stack traces. This makes it more versatile than UMDH as it can hook several different allocator types at different granularities (Ranging from the c runtime to raw virtual memory allocations).

By default, LeakDiag simply walks the stack base pointers, but it can be modified to use the Dbghlp StackWalkAPI to resolve FPO data. This will produce full stacks, though the performance penalty is higher. On the flip side, you can customize the stack walking behavior to only go to a certain depth, etc to minimize the perf penalty.

Please find LeakDiag here:

answered on Stack Overflow Sep 27, 2013 by Martin Ba • edited Sep 27, 2013 by EdChum

Memory leak due to marshalling managed delegate?


Just declare your native method with a delegate parameter instead of IntPtr. The marshaler will do all this stuff for you.

answered on Stack Overflow Sep 13, 2012 by Anton Tykhyy

How to diagnose a corrupted suffix pattern in a mixed managed/unmanaged x32 .NET application


I finally resolved this, and found that I had made one crucial mistake. With a corrupted suffix pattern, the error will come on a free attempt, which led me to believe that it was unlikely that the allocation would have come right before the free. This was not accurate. When dealing with corruption that occurs on free, barring further information, any allocation point is equally likely. In this case, the verifier halt was coming on freeing a parameter which had been incorrectly defined as a struct of shorts instead of as a struct of ints.

Here's the offending code:

    [DllImport("gdi32.dll", CharSet = CharSet.Unicode)]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool GetCharABCWidths(IntPtr hdc, uint uFirstChar, uint uLastChar, [Out] ABC[] lpabc);

(This declaration is okay)

    public struct ABC
        public short A;
        public ushort B;
        public short C;

(This is not okay, per the MSDN article on the ABC struct : )

So, if you find yourself debugging memory corruption that halts on free, keep in mind: never discount the possibility that the memory being freed was incorrectly allocated to begin with... and mind those [Out] parameters on unmanaged calls!

answered on Stack Overflow Feb 14, 2014 by ianschol

Memory leak due to marshalling managed delegate?


As far as I know delegate is a list of function pointers in C#. Passing that to a parameter of function pointer in C++ makes me feels there will be a problem. You should consider adding a native function to report status and pool this one in a separate thread or background worker in C#. Such that you do not need to pass a delegate any more.

answered on Stack Overflow Sep 13, 2012 by Mahmoud Fayez

0x000000C4 error on Windows Server 2012 R2 installation


Having an error in the early beginning of the installation means that you have a hardware issue, or incompatible hardware.
First, make sure the files in the USB are not damaged.
Then, you may need to add the RAID drivers for your server to the installation files.

answered on Super User Aug 30, 2014 by ITProStuff

0x000000C4 error on Windows Server 2012 R2 installation


I realise this is slightly different to the problem you experienced, but I had the same problem when using Windows 2012 on VirtualBox, and saw the others with Windows 8.1 were also having the same problem.

To cure it, I had to set the CMPXCHG16B flag:

"C:\Program Files\Oracle\VirtualBox\VBoxManage" setextradata "My VM Name" VBoxInternal/CPUM/CMPXCHG16B 1

You can also set it globally if required:

"C:\Program Files\Oracle\VirtualBox\VBoxManage" setextradata global VBoxInternal/CPUM/CMPXCHG16B 1

I also had to go into the BIOS and change Memory Protection from Disabled to Enabled to solve the problem, so there may be a connection there with your issue.

answered on Super User Sep 7, 2015 by SharpC • edited Sep 7, 2015 by SharpC



Updating the Intel Display driver to and updating Photoshop has solved the issue.

answered on Super User Dec 26, 2015 by meun5 • edited Dec 26, 2015 by meun5

Virtualbox gives Error code: 0x000000C4 with Windows 8.1 or 2012


I also had the same issue, and it's also possible to set CMPXCHG16B globally:

"C:\Program Files\Oracle\VirtualBox\VBoxManage" setextradata global VBoxInternal/CPUM/CMPXCHG16B 1

However I also had to go into the BIOS and change the Memory Protection setting from Disabled to Enabled before the issue went away.

answered on Super User Sep 7, 2015 by SharpC • edited Sep 7, 2015 by SharpC

The !address windbg command says that heap address is 'REGionUsageIsVAD' even though it was allocated using HeapAlloc


i reread your question thinking i would update what i commented
but upon closer look it seems there are lot of holes
it appears you copied things and didnt paste right
where is that pointer on heap ?
01699928 which version of windbg are you using
since i couldn't confirm i cooked up a simple program enabled hpa in gflags and executed the exe under windbg below is the screen shot
except what you paste as isregionvad ( this line is output under kernel !address not in user !address ) every thing else appears to be similar in the screenshot

enter image description here

answered on Stack Overflow Aug 20, 2016 by blabb

Windows Server 2012 Standard - 0x00000091 on boot


Windows 2012 requires newer hardware than 2008. The error 0x00000091 is usually the result of a hardware failure or unsupported hardware.

answered on Server Fault Apr 14, 2015 by longneck


Leave a comment

(plain text only)


  1. winerror.h from Windows SDK 10.0.14393.0

User contributions licensed under CC BY-SA 3.0