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 ...
随机推荐
- Chrome plug-in 和Extension
"扩展"和"插件",其实都是软件组件的一种形式,Chrome 只不过是把两种类型的组件分别给与了专有名称,一个叫"扩展",另一个叫" ...
- 如何给一个网卡配置多个虚拟ip
1.执行命令 ifconfig etho: 192.168.1.101 netmask 255.255.255.0 up 2.要想永久保存,则将刚刚那行代码写入/etc/rc.local (开机都会 ...
- 解析Json的谷歌官方方法Gson和阿里巴巴的fastJson方法。
//测试单个json文本 public void testGsonTwo(){ String jsonStr = "{\"id\":100,\"name\&qu ...
- 用for循环打印菱形
package nothh; public class mmm { public static void main(String[] args) { //for循环内的 for按顺序运算,先打印1/4 ...
- setsockopt的作用
功能描述: 获取或者设置与某个套接字关联的选 项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为了操作套接字层的选项, ...
- HDU 4906 Our happy ending(2014 Multi-University Training Contest 4)
题意:构造出n个数 这n个数取值范围0-L,这n个数中存在取一些数之和等于k,则这样称为一种方法.给定n,k,L,求方案数. 思路:装压 每位 第1为表示这种方案能不能构成1(1表示能0表示不能) ...
- wScratchPad 实现刮刮卡效果
插件网址http://wscratchpad.websanova.com/
- mysql数据库 安装 (原创)
1.首先下载mysql 数据库,我安装的是mysql5.1版本,直接安装就行,但是如果以后你想在数据库里显示中文的话,要把字符集设置为gb2312 2.配置数据源odbc. mysql-connec ...
- Linux gcc编译(动态库,静态库)
1. linux 库路径: /lib , /usr/lib , /usr/local/lib 2.linux 编译静态库 a.编写源文件vi pr1.c void print1(){ print ...
- QuartZ的线程锁
; ...