R6010 -abort() has been called
版权所有,转载请注明出处。
R6010 -abort() has been called
环境:
Windows7 旗舰版 64Bit
Visual studio 2012 编译32Bit运行程序
Eigen 矩阵库
GLEW opengl扩展库
问题描述:
莫名其妙的遇到了R6010错误,通过屏蔽代码最终将问题定义到这个示例程序范围内。当定义了函数opengl_fun()后,应用程序就会链接GLEW.dll库。运行程序,就会在代码:
CTemp *ptTemp = new CTemp();
发生崩溃,如下图所示。

由于是使用了stl的多线程,所以具体的原因很难定位。表面直接原因就是在类CTemp声明中直接使用了 Eigen::Matrix4d mat4d 对象,但是这个类是通过模板实现的,所以让问题的原因更加诡异。
问题结果:
此外在以下两种情况下并不发生崩溃:
(1)如果蔽掉opengl_fun()函数,让应用程序不在链接GLEW.dll,那么不在发生崩溃;
(2)如果不屏蔽opengl_fun()函数,将stl的多线程更改为Windows的原生多线程,也不会出现崩溃。
所以最终问题的原因可能出现在GLEW.dll库上面,也可能出现在模板或者stl的多线程上,但是却无法解决。后来我只能通过放弃stl的多线程,改用Windows的远程多线程。大家有没有遇到相同类似的问题,可以讨论讨论!
重现代码:
//include:opengl头文件,Eigen模板头文件
//lib : opengl的lib文件
//link : 链接glew32.lib
//dll : 运行时需要glew32.dll #include <stdlib.h>
#include <Eigen/Eigen>
#include <GL/glew.h>
#include <thread> void opengl_fun() //只有当定义了该函数,才会真正链接上glew.dll库
{
GLuint vVbo = 0;
glGenBuffers( 1, &vVbo );
} class CTemp
{
public:
CTemp() {}
~CTemp() {}
private:
Eigen::Matrix4d mat4d;
}; void render_thread_fun( void *pt )
{
CTemp *ptTemp = new CTemp(); //当链接glew32.dll库时,就会出现崩溃错误
} int main(int argc, char* argv[])
{
void *ptT = NULL;
std::thread render_thread = std::thread( render_thread_fun, ptT );
render_thread.join(); return 0;
}
R6010 -abort() has been called的更多相关文章
- R6010 - abort() has been called 错误
今天修改了下程序,发布到服务器上进行测试,结果在测试的时候弹出下面的一个框: 找了N久,发现了原因,差点呗自己弄哭了.. 程序里写了下面这句代码,没有注释掉.
- R6010 -abort() has been called错误分析及其解决方法
近期使用vs2010编程出现下面问题.在网上收集了大家的意见之后,整理了一下 导致出现这种原因有: 1.非法指针訪问和内存泄漏 2.大家再查查吧.一定是指针出现故障了.设置的指针范围跟你执行的不正确 ...
- C++实现网格水印之调试笔记(三)—— 初有结果
错误: error C2338: THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD 这种错误 ...
- VC++调试错误的解决方案
这篇文章主要用来记录使用Visual Studio过程中,出现的各种error,并提供自己当时解决的方案.但是,一个error可能由不用原因引起的,文中案例仅供大家参考. nafxcwd.lib(th ...
- Basestation函数解析(二)
---恢复内容开始--- 这部分从Basestation的RecvDataThread开始,流程为 RecvDataThread->RecvData->Decoder->PostDa ...
- 关于MSVCR100.dll、MSVCR100d.dll、Msvcp100.dll、abort()R6010等故障模块排查及解决方法
一.常见故障介绍 最近在开发相机项目(项目细节由于公司保密就不介绍了),程序运行5个来月以来首次出现msvcr100.dll故障等问题,于是乎开始了分析之路,按照度娘上的一顿操作,期间也是出现了各种不 ...
- java.net.SocketException: Software caused connection abort: socket write error
用Java客户端程序访问Java Web服务器时出错: java.net.SocketException: Software caused connection abort: socket write ...
- abort 用法讨论
同事说: TT***.factary( procedure() begin .... abort; .... end)大家在TTask中不建议用abort因为难以控制,我测试 ...
- delphi中exit,abort,break,continue 的区别
from:http://www.cnblogs.com/taofengli288/archive/2011/09/05/2167553.html delphi中表示跳出的有break,continue ...
随机推荐
- 使用js给页面显示的图片添加水印效果
功能描述:使用Jquery 给页面的图片添加 版权信息水印. 这里的水印并不是真的把每一张图片上都添加了水印.而是在图片的上方添加了一个层,层中包含了水印图片效果就像是图片上加了水印. 功能原理:1, ...
- java 面向对象编程-- 第十三章 反射、类加载与垃圾回收
1.狭义JavaBean规范 Javabean必须包含一个无参数的public构造方法,方便通过反射的方式产生对象. 属性必须都是私有的. Javabean必须包含符合命名规范的get和set方法,以 ...
- plist文件的读取
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"cinemalist" ofType:@"pl ...
- fetch VS AJAX
fetch('https://mywebsite.com/endpoint/', { method: 'POST', headers: { 'Accept': 'application/json', ...
- IT公司100题-16-层遍历二元树
问题描述: 层遍历二叉树,同一层从左往右打印. 定义二元查找树的结点为: typedef struct BSTreeNode { int data; BSTreeNode *left; BSTreeN ...
- IT公司100题-15-求二元查找树的镜像
问题描述: 输入一颗二元查找树,将该树转换为它的镜像树,即对每一个节点,互换左右子树. 例如输入: 6/ \4 12/ \ / \2 5 8 16 输出: 6/ ...
- javax.servlet.ServletException: Error instantiating servlet class Compiler 错误
javax.servlet.ServletException: Error instantiating servlet class Compiler org.apache.catalina.authe ...
- 1、ViewModel类的构建和INoyifyPropertyChanged的应用
public class SampleItem : INotifyPropertyChanged { public SampleItem() { } private string title; pub ...
- 图书馆管理系统SRS
1.任务概述 1.1目标 主要提供图书信息和读者基本信息的维护以及借阅等功能.本系统是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学.合理的规划,系统.高效的实施. 1 ...
- 记一个有想法却没能力实现的硬件产品——mp3校时闹钟
枕头旁的闹钟,我想大家都用过,很便宜.用一节干电池供电.但其最大的缺点就是不太准,不能校时. 电池啥事用光,也不知道.钟是走的很慢,没按时闹,搞的自己迟了到. 于是就有了我的漫长思考过程... 先说手 ...