windows系统的快速失败机制---fastfail
windows系统的快速失败机制---fastfail,是一种用于“快速失败”请求的机制 — 一种潜在破坏进程请求立即终止进程的方法。 无法使用常规异常处理设施处理可能已破坏程序状态和堆栈至无法恢复的的严重故障。 使用 __fastfail 终止进程开销最少。
快速失败请求是独立的请求,通常只需执行两个指令。 一旦执行快速失败请求后,内核就会采取相应的行动。 在用户模式代码中,引发速快速失败事件时,除指令指针本身外不存在任何内存依赖项。 即使存在严重的内存破坏,也可最大限度地提高其可靠性。
用户模式开始失败显示为第二个机会非持续性异常,异常代码为 0xC0000409,至少包含一个异常参数。 第一个异常参数为 code 值。 此异常代码对 Windows 错误报告 (WER) 和调试基础结构指示进程已损坏并且应采取最少的进程内操作以响应故障。 内核模式快速失败请求可以通过使用专用检错代码 KERNEL_SECURITY_CHECK_FAILURE (0x139) 实现。 在这两种情况下,都没有调用异常处理程序,因为程序预期处于损坏状态。 如果存在调试程序,就有机会在终止进程之前检查程序的状态。
Windows 8 开始支持本机快速失败机制。 不支持本机快速失败指令的 Windows 操作系统通常会将快速失败请求视为访问冲突,或视为 UNEXPECTED_KERNEL_MODE_TRAP 错误检查。 在这些情况下,仍然会终止程序,但并不一定会快速终止。
windows提供了一个内部专用API来实现这种机制---__fastfail,
原型如下:
void __fastfail(unsigned int code);
参数:
[in] code
winnt.h 或 wdm.h 中的 FAST_FAIL_<description> 符号常量表示过程终止原因。描述故障条件的类型并采用特定于环境的方式纳入故障报告。
返回值:
__fastfail 内部函数不会返回。
在内部,可以使用几个特定于体系结构的机制实现 __fastfail:
|
体系结构 |
指令 |
代码参数的位置 |
|---|---|---|
|
x86 |
int 0x29 |
ecx |
|
x64 |
int 0x29 |
rcx |
|
ARM |
操作码 0xDEFB |
r0 |
我们用VC++编译程序时,编译器会自动将这个函数链接到我们的程序实现这种机制。
windows系统的快速失败机制---fastfail的更多相关文章
- 【原创】快速失败机制&失败安全机制
这是why技术的第29篇原创文章 之前在写<这道Java基础题真的有坑!我求求你,认真思考后再回答.>这篇文章时,我在8.1小节提到了快速失败和失败安全机制. 但是我发现当我搜索" ...
- 快速失败机制--fail-fast
fail-fast 机制是Java集合(Collection)中的一种错误机制.当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast(快速失败)事件.例如:当某一个线程A通过iter ...
- Linux系统的快速启动机制(内核切换) 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4187846 原文地址:Linux系统的 ...
- 关于java中ArrayList的快速失败机制的漏洞——使用迭代器循环时删除倒数第二个元素不会报错
一.问题描述 话不多说,先上代码: public static void main(String[] args) throws InterruptedException { List<Strin ...
- java中的fail-fast(快速失败)机制
java中的fail-fast(快速失败)机制 简介 fail-fast机制,即快速失败机制,是java集合中的一种错误检测机制.当在迭代集合的过程中对该集合的结构改变是,就有可能会发生fail-fa ...
- 面试笔记--Fast-Fail(快速失败)机制
1.解决: fail-fast机制,是一种错误检测机制.它只能被用来检测错误,因为JDK并不保证fail-fast机制一定会发生.若在多线程环境下使用fail-fast机制的集合,建议使用“java. ...
- 快速失败/报错机制 - fail-fast
一.快速报错机制(fail-fast) 这是<Java编程思想>中关于快速报错机制的描述 Java容器有一种保护机制,能够防止多个进程同时修改同一个容器的内容.如果在你迭代遍历容器的过程中 ...
- Java集合框架中的快速失败(fail—fast)机制
fail-fast机制,即快速失败机制,是java集合框架中的一种错误检测机制.多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除),则会抛出Concurre ...
- 超详细,Windows系统搭建Flink官方练习环境
如何快速的投入到Flink的学习当中,很多人在搭建环境过程中浪费了太多的时间.一套一劳永逸的本机Flink开发环境可以让我们快速的投入到Flink的学习中去,将精力用在Flink的原理,实战.这也对于 ...
随机推荐
- C# 获取系统字体方法
//需要引用命名空间 using System.Drawing; using System.Drawing.Text; //获取系统字体方法 public dynamic GetFontNames() ...
- Kali 2019(debian linux)安装MySql5.7.x
Kali 2019(debian linux)安装MySql5.7.x MySQL安装 确认是否安装MySQL 终端输入:mysql 如出现Welcome to the MariaDB monitor ...
- Java 之 Session 包含验证码登录案例
需求: 1. 访问带有验证码的登录页面login.jsp 2. 用户输入用户名,密码以及验证码. 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误 如果验证码输入有误,跳转登录页面, ...
- java-检查IP和端口在超时时间内是否可以连接
检查IP和端口在超时时间内是否可以连接 /** * 检查IP和端口是否可以连接 * @param ip * @param port * @return */ private static boolea ...
- day 04作业
目录 简述Python的五大数据类型的作用.定义方式.使用方法: 数字类型 字符串类型(str) 列表(list) 字典(dict) 布尔型(bool) 一行代码实现下述代码实现的功能: 写出两种交换 ...
- PHP java时间戳转php时间戳
/** * java时间戳转php时间戳 * @param int $javaUt java的时间戳 * @return int * @Date 2019/8/26 */ public static ...
- pyecharts绘制map地图
pyecharts的安装和地图库的安装可以参照 geo绘图:https://www.cnblogs.com/qi-yuan-008/p/12025123.html 直接进入 python的具体使用阶段 ...
- JSON是什么
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度, 那么,JSON到底是什么? JSON就是一串字符串 只不过元素会使 ...
- Codeforces G. Bus Number(dfs排列)
题目描述: Bus Number time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 补充拓展:CSS权重值叠加
都知道CSS选择器有权重优先级,权重大的优先展示. 但部分人可能不清楚,权重值也是可以叠加计算的 <!DOCTYPE html> <html> <head> < ...