Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)问题解决

博客内容提要:遇到 Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1) 的错误,该问题是由于多线程环境下SurfaceView中Bitmap的不恰当回收导致。在SurfaceView的绘图线程中,若Bitmap被回收,同时还在尝试绘制,就会触发该错误。解决方案在于修改SurfaceView按钮事件及线程中处理Bitmap的方式,确保线程安全。
摘要由CSDN通过智能技术生成

异常出现频率:非必现,乍看不可捉摸。

BUG导致:应用程序崩溃,过一小会儿会自动退出。

Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)



遇到这个问题很无奈,但是经过不断探索终于找到了问题的原因!!!

这个问题非常不给面子,居然在给上级演示程序的时候突然崩坏! 哭哭哭!!!NND看老子一会儿怎么治你!!!


这个是典型的多线程引起的问题,

我当时的应用场景是:

SurfaceView里面有一个Bitmap成员变量

而我们都知道SurfaceView里面的绘图方法是在一个新开的线程里面执行的,在这个绘图方法里,会执行把Bitmap绘制到Canvas上面的操作

当我点击一个按钮的时候,可能会改变Bitmap的引用,指向另外一张处理完成的图片,这个时候Bitmap这个成员变量会被我recycle(),释放掉。

问题就在这里了,我在recycle这个Bitmap的时候,也许Thread中正在执行把Bitmap绘制到Canvas上的操作,

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值