解决"waitForCondition(LockCondition) timed out (identity=23, status=0). CPU may be pegged. trying again."问题
前几天在跑游戏引擎的时候,遇到了一个比较奇怪的问题,logcat不断地打印下面的错误:
waitForCondition(LockCondition) timed out (identity=23, status=0). CPU may be pegged. trying again.
更为奇怪的是,机器完全不能响应,最终重启,而且是可以100%重现的。
测试的机器是Moto ME525(MIUI 2.3.7)。
经过排查,发现与FBO的使用有关,引擎中对FBO使用的大概逻辑是:
@Override
public void onDrawFrame(GL10 gl) {
gl.glBindFramebuffer(GL10.GL_FRAMEBUFFER, 0);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // here is some code that use fbo
//gl.glBindFramebuffer(GL10.GL_FRAMEBUFFER, fbo);
return;
}
问题就出在,在return之前没有恢复到默认的FBO,解决起来也比较简单:
@Override
public void onDrawFrame(GL10 gl) {
gl.glBindFramebuffer(GL10.GL_FRAMEBUFFER, 0);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // here is some code that use fbo
//gl.glBindFramebuffer(GL10.GL_FRAMEBUFFER, fbo); // restore to the default fbo
gl.glBindFramebuffer(GL10.GL_FRAMEBUFFER, 0);
return;
}
网上也有一些关于此问题的讨论,一部分人说是FBO的问题,一部分人说并非是FBO的问题;但我更相信是FBO的问题,理由如下:
先来看看GLSurfaceView中的一个代码片段
GLSurfaceView view = mGLSurfaceViewWeakRef.get();
if (view != null) {
view.mRenderer.onDrawFrame(gl);
}
int swapError = mEglHelper.swap();
报出错误日志的地方正是上面对swap的调用之处,而swap的功能正是交换前后缓冲区,而FBO显然是影响缓冲区的。
解决"waitForCondition(LockCondition) timed out (identity=23, status=0). CPU may be pegged. trying again."问题的更多相关文章
- 解决 XMLHttpRequest status = 0 问题 及 返回值为null问题
1.XMLHttpRequest status = 0 问题 XMLHttpRequest的说明:http://www.w3.org/TR/XMLHttpRequest/ . The status a ...
- 完美解决AutoCAD2012,AutoCAD2013本身电脑里有NET4.0或以上版本却装不上的问题
适用情况:电脑里本身有NET4.0或4.5版本,并且正确安装.或本身你就装有AutoCAD2013或AutoCAD2012要装AutoCAD2012或AutoCAD2013却装不上的情况 如图1所示. ...
- asp.net identity 2.2.0 中角色启用和基本使用(七)提示点
在使用asp.net identity 2.2.0 中,大家可能设计到一些修改和配置 关于Identity的配置,在App_Start文件中的IdentityConfig.cs中,这里几乎有你需要的一 ...
- [转]Material Design Library 23.1.0的新变化与代码实战
Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView ...
- Material Design Library 23.1.0的新变化与代码实战
Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView ...
- 小米手机跨域问题,返回resphone:undefined,status 0
小米手机跨域问题,返回resphone:undefined,status 0我小米note2的手机登录不上,返回resphone:undefined,status 0 我手机登录不了的问题解决了,后台 ...
- AJAX问题 XMLHttpRequest.status = 0是什么含义
在调用AJAX的时候遇到了XMLHttpRequest. status为0 的情况,http协议里可是没这个状态码的,众所周知,XMLHttpRequest. Status为HTTP请求状态码,一般为 ...
- jQuery ajax请求错误返回status 0和错误error的问题
上周发现一个jQuery ajax请求错误返回status 0和错误error的问题,responseText是"error",状态码是0而不是200: $.ajax({ type ...
- (弃)解读Openstack Identity API v2.0
目前OpenStack社区提供了详尽的API文档,并配有丰富的说明和示例,关于Identity API v2查看这里, 关于Identity API v3请查看这里. 尽管现在官方已经不建议OpenS ...
随机推荐
- 动手实践:在Windows上安装NumPy、Matplotlib、SciPy和IPython
参考:http://book.2cto.com/201401/39327.html
- S1:变量
接触JS一段时间了,但总感觉不得要领,技术得不到提升,翻来覆去,决定对基础知识做一次系统的整理,要坚持每一天都有新的收获 ! 变量,即通过一个名字将一个值关联起来,以后通过变量就可以引用到该值,比如: ...
- oracle数据库常用SQL语句(11.29更新)
笔者日常工作中常用到的sql语句,现总结如下,留作日后查看. 1.按照两列中的最大值取 ,只取两列其中的一列 SELECT * FROM t_doc T ORDER BY GREATEST(T.Loa ...
- What am I missing out in life if I don't have a girlfriend?
http://www.quora.com/What-am-I-missing-out-in-life-if-I-dont-have-a-girlfriend/answer/Kelly-Erickson ...
- 关于jquery.bind
随着现在JQuery这个javascript的越来越强大,在我们平常的前端UI开发,如果不使用JQuery,说明你已经很out了.今天我们来学习一下 JQuery的bind事件.虽然,这个话题被很 ...
- 关于RecyclerView中Viewholder和View的缓存机制的探究
关于RecyclerView中Viewholder和View的缓存机制的探究 http://www.cnblogs.com/littlepanpc/p/4241575.html
- OnePlus安装Kali-NetHunter
1.关于 Kali NetHunter Kali NetHunter 是一款由 Offensive Security 团队研发设计的,以 Nexus(手机/平板)为基本 硬件设备,基于原生 Andro ...
- @font-face usage
If you haven’t been living in a cave for the past few months, you will have heard lots of talk about ...
- XML JSON解析--基本功能
一,json的解析 json文件: {"code": "cn","cities": [{"name": " ...
- oracle第一招之神马都是浮云
oracle: 一款关系型(二维表)数据库,可以用来存储海量数据.在大数据量并发检索的情况下,性能要高于其他的同类数据库产品.一般运行环境是Linux和Unix操作系统上! 目前最流行的商业数据库,主 ...