我正在尝试使用一些本地代码来创建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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)