android–Gifflen致命信号11

android–Gifflen致命信号11,第1张

概述我正在尝试使用一些本地代码来创建Gif.我使用绘画绘制图像,创建几个笔划,单击保存,绘制的图像将保存为JPG格式.当我点击创建Gif时,它会获取所有图像并开始创建一个gif.这是当我得到致命信号11并且应用程序重新启动时.我使用本机代码,所以我有崩溃的回溯:I/DEBUG(95): backtrace: I/DEBUG(95): #00 pc 00

我正在尝试使用一些本地代码来创建Gif.
我使用绘画绘制图像,创建几个笔划,单击保存,绘制的图像将保存为JPG格式.当我点击创建Gif时,它会获取所有图像并开始创建一个gif.这是当我得到致命信号11并且应用程序重新启动时.

我使用本机代码,所以我有崩溃的回溯:

I/DEBUG(95): backtrace:I/DEBUG(95):     #00  pc 00002a04  /lib/libgifflen.so (NeuQuant::learn()+239)I/DEBUG(95):     #01  pc 00002b9d  /lib/libgifflen.so (NeuQuant::quantise(DIB*,DIB*,int,int)+84)I/DEBUG(95):     #02  pc 00002d41  lib/libgifflen.so (Java_com_stay_gif_GifEncoder_addFrame+208)I/DEBUG(95):     #03  pc 0001deb0  /system/lib/libdvm.so (dvmPlatformInvoke+112)I/DEBUG(95):     #04  pc 0004d103  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*,JValue*,Method const*,Thread*)+394)I/DEBUG(95):     #05  pc 0004f21f  /system/lib/libdvm.so (dvmResolveNativeMethod(unsigned int const*,Thread*)+174)I/DEBUG(95):     #06  pc 000272e0  /system/lib/libdvm.soI/DEBUG(95):     #07  pc 0002bbe8  /system/lib/libdvm.so (dvmInterpret(Thread*,JValue*)+180)I/DEBUG(95):     #08  pc 0005fb37  /system/lib/libdvm.so (dvmInvokeMethod(Object*,ArrayObject*,ClassObject*,bool)+374)I/DEBUG(95):     #09  pc 000670e5  /system/lib/libdvm.soI/DEBUG(95):     #10  pc 000272e0  /system/lib/libdvm.soI/DEBUG(95):     #11  pc 0002bbe8  /system/lib/libdvm.so (dvmInterpret(Thread*,JValue*)+180)I/DEBUG(95):     #12  pc 0005f871  /system/lib/libdvm.so (dvmCallMethodV(Thread*,Object*,bool,std::__va_List)+272)I/DEBUG(95):     #13  pc 000496f3  /system/lib/libdvm.soI/DEBUG(95):     #14  pc 00048581  /system/lib/libandroID_runtime.soI/DEBUG(95):     #15  pc 00049637  /system/lib/libandroID_runtime.so (androID::AndroIDRuntime::start(char const*,char const*)+390)I/DEBUG(95):     #16  pc 00000dcf  /system/bin/app_process

崩溃的代码:

voID NeuQuant::learn(){    int i,j,b,g,r;    int radius,rad,Alpha,step,delta,samplepixels;    //unsigned char *p;    int *p;    unsigned char *lim;    Alphadec = 30 + ((samplefac-1)/3);    p = (int*)thepicture;    lim = thepicture + lengthcount;    samplepixels = lengthcount/samplefac;    delta = samplepixels/ncycles;    Alpha = initAlpha;    radius = iniTradius;    rad = radius >> radiusbiasshift;    if (rad <= 1) rad = 0;    for (i=0; i

向日志发现我发现错误发生在NeuQuant :: learn()中,做了一些调试,它在这个确切的行上崩溃了b =(((* p))& 0xff)<< netbiasshift ;.Crash并不总是发生,有时我得到一个gif并且一切正常,但有时它在b =(((* p))& 0xff)时崩溃<< netbiasshift ;.我做了一些更多的调试,我发现当它在b =(((* p))& 0xff)上崩溃时<< netbiasshift;它在第一次进入时没有崩溃,它在b =(((* p))& 0xff)<<<< netbiasshift ;.任何人都知道可能是什么问题?最佳答案我变了:

if (p >= (int *)lim)    p -= lengthcount;

至:

if (p >= (unsigned int *)lim)    p = (unsigned int*)thepicture;

它似乎现在有效. 总结

以上是内存溢出为你收集整理的android – Gifflen致命信号11全部内容,希望文章能够帮你解决android – Gifflen致命信号11所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1140309.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)