【我的C/C++语言学习进阶之旅】NDK开发之解决错误:signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0xXXX

部署运行你感兴趣的模型镜像

一、错误描述

今天在使用C++实现一个OpenGL特效的时候,运行出错,如下所示:
错误描述为:

signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x75b23bef88

在这里插入图片描述

2022-06-10 11:08:22.005 12615-12615/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG: Build fingerprint: 'Xiaomi/cepheus/cepheus:11/RKQ1.200826.002/V12.5.6.0.RFACNXM:user/release-keys'
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG: Revision: '0'
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG: ABI: 'arm64'
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG: Timestamp: 2022-06-10 11:08:22+0800
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG: pid: 12319, tid: 12347, name: GLThread 6718  >>> com.oyp.face2dsticker <<<
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG: uid: 10528
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG: signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x75b23bef88
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG:     x0  0000000000000001  x1  0000000000000000  x2  0000000000000000  x3  0000000000000000
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG:     x4  0000000000000000  x5  0000000000000050  x6  00000076b01e5000  x7  00000000005b018e
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG:     x8  0000000000000000  x9  0000000000000000  x10 0000000000000001  x11 0000000000000001
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG:     x12 0000000000000052  x13 0000000062a2b5a5  x14 003560faa22370df  x15 000097e7543f071f
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG:     x16 00000075b2414ca0  x17 00000075b23c00b4  x18 00000075b8b16000  x19 000000760b967400
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG:     x20 0000000000000000  x21 000000760b967400  x22 00000075b8f23000  x23 000000760b9674b8
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG:     x24 000000761fab0610  x25 00000075b8f23000  x26 000000000000000b  x27 0000000000000000
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG:     x28 00000075b8f218f0  x29 00000075b8f21810
2022-06-10 11:08:22.005 12615-12615/? A/DEBUG:     lr  00000075b23bef74  sp  00000075b8f21180  pc  00000075b23bef88  pst 0000000060000000

对应的堆栈信息前几行为:

022-06-10 11:08:22.170 12615-12615/? A/DEBUG: backtrace:
2022-06-10 11:08:22.170 12615-12615/? A/DEBUG:       #00 pc 000000000002cf88  /data/app/~~2T5COK4_-x6o-a1NRWEMlg==/com.oyp.face2dsticker-g_kwM6JD6Gg0wDs828fp2g==/lib/arm64/libXtcOpenGLCross.so (FaceStickerFilterVLog::drawFrame(int, float*, float*)+3216) (BuildId: 84050149e3e5c3fb80b5f99fb981890951a97c16)
2022-06-10 11:08:22.170 12615-12615/? A/DEBUG:       #01 pc 00000000000295cc  /data/app/~~2T5COK4_-x6o-a1NRWEMlg==/com.oyp.face2dsticker-g_kwM6JD6Gg0wDs828fp2g==/lib/arm64/libXtcOpenGLCross.so (MyGLRenderContext::nativeOnDrawFrame(int)+284) (BuildId: 84050149e3e5c3fb80b5f99fb981890951a97c16)
2022-06-10 11:08:22.170 12615-12615/? A/DEBUG:       #02 pc 000000000001de3c  /data/app/~~2T5COK4_-x6o-a1NRWEMlg==/com.oyp.face2dsticker-g_kwM6JD6Gg0wDs828fp2g==/lib/arm64/libXtcOpenGLCross.so (Java_com_xtc_opengl_XtcCustomStickerRender_nativeOnDrawFrame+32) (BuildId: 84050149e3e5c3fb80b5f99fb981890951a97c16)

在这里插入图片描述

二、错误排查

2.1 addr2line排查堆栈

我使用我之前博客介绍的工具addr2line,来确定是哪一行出错了

请输入当前目录下debug so的文件名:"D:\GitLab Source\Face2DSticker\cross\build\intermediates\cmake\debug\obj\arm64-v8a\libXtcOpenGLCross.so"
请输入异常时PC寄存器值:000000000002cf88
----------------------- addr2line ------------------------
debug文件路径: "D:\GitLab Source\Face2DSticker\cross\build\intermediates\cmake\debug\obj\arm64-v8a\libXtcOpenGLCross.so"  PC=000000000002cf88
FaceStickerFilterVLog::drawFrame(int, float*, float*)
FaceStickerFilterVLog.cpp:?
---------------------------------------------------------
Press any key to continue . . .

但是值告诉了我是这个FaceStickerFilterVLog::drawFrame函数出错,行号就没有显示了,直接一个?号。

2.2 原始的log定位

然后我将这个函数体,从头到尾都加上了日志,想通过最原始的日志来排查问题。
发现从函数体最开始,到函数体最后面的所有日志全部打印了。

bool FaceStickerFilterVLog::drawFrame(int textureId, GLfloat *vertexBuffer, GLfloat *textureBuffer) {
    LOGD("FaceStickerFilterVLog::drawFrame   start")
	...  中间一堆代码
	LOGD("FaceStickerFilterVLog::drawFrame   end")
}

看来函数体中写的代码是没有问题的,但是运行还是一样的crash

2.3 把函数体变成空实现

然后我把函数体变成了空实现,啥都没有写,

bool FaceStickerFilterVLog::drawFrame(int textureId, GLfloat *vertexBuffer, GLfloat *textureBuffer) {
    
}

函数体为空,但是运行还是一样的crash

2.4 认真查看代码

好吧,没办法,最终定位就是这个函数有问题,只能再认认真真看看这个函数到底哪里有问题。

我最终发现,这个FaceStickerFilterVLog::drawFrame函数是定义了有bool返回值的

bool FaceStickerFilterVLog::drawFrame(int textureId, GLfloat *vertexBuffer, GLfloat *textureBuffer);

但是我们的函数体内部并没有return一个bool值。

即使出现这样的没返回值错误,C++居然能编译过,但是最终会运行崩溃。

三、解决问题

解决办法就是,如果一个函数定义了有返回值,那要保证各种case下,都能有返回值,即return XXX语句一定要写。

最后,我在函数体结尾处加上了返回值,就正常运行了。

bool FaceStickerFilterVLog::drawFrame(int textureId, GLfloat *vertexBuffer, GLfloat *textureBuffer) {
    LOGD("FaceStickerFilterVLog::drawFrame   start")
	...  中间一堆代码
	LOGD("FaceStickerFilterVLog::drawFrame   end")
	
	// 注意,这句话一定要写,一定要有返回值出去
	return true;
}

重新运行代码,正常

四、总结

  • 问题描述:出现 signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0xXXX的问题时。
  • 问题原因:是因为C++的函数缺少指定的返回值。遇到这个问题,要仔细排查一下整个调用链条上的方法是否缺少return语句
  • 解决方法:添加上缺失的return返回值即可修复。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

11-04 17:36:01.575088 6484 28034 D LogKit_AnrCrashDumpRunnable: The log switch is turned on, but the conditions are not met. exceptionInfo = ExceptionInfo{appInfoList=[AppInfo{packageName='com.newcall', processName='com.newcall:mini_app_activity_0', appName='新通话', versionName='1.0.9', versionCode=1001000, componentName='Native crash', isForeground=true}], crashInfo=CrashInfo{exceptionClassName='signal 5 (SIGTRAP)', message='Trap', stackTrace='Process name is com.newcall:mini_app_activity_0, uid is 10102, not key_process keyProcess: 0 *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Build fingerprint: 'realme/RMX5130/RE640BL1:16/AP3A.240617.008/B.4b6f142-2ad1801-2ac7aa8:user/release-keys' Revision: '0' ABI: 'arm64' Timestamp: 2025-11-04 17:35:58.987987817+0800 Process uptime: 37s Cmdline: com.newcall:mini_app_activity_0 pid: 28232, tid: 28232, name: _app_activity_0 >>> com.newcall:mini_app_activity_0 <<< uid: 10102 tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE) pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY) signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x00000076e1679128 Abort message: '[FATAL:crashpad_client_linux.cc(745)] Render process (28274)'s crash wasn't handled by all associated webviews, triggering application crash.' x0 0000000000000000 x1 00000076e7a454e0 x2 00000076e7a454e0 x3 0000000000000000 x4 0000000000000000 x5 2762622d77746d68 x6 2762622d77746d68 x7 7f7f7f7f7f7f7f7f x8 0000000000000000 x9 0000000000000000 x10 0000000000000090 x11 0000000000000090 x12 0000000000000090 x13 000000000000008f x14 000000000000000a x15 00000000ffffffa5 x16 0000000000000001 x17 00000078436c9c1c x18 000000784cf8c000 x19 0000007fe7080470 x20 000000000000008e x21 0000007fe70803b0 x22 00000076e7a45f58 x23 000000784c65c840 x24 000000000000008f x25 000000000000000b x26 000000000000008f x27 0000000000000026 x28 000000000000008f x29 0000007fe7080350 lr 00000076e1678fdc sp 0000007fe707ff20 pc 00000076e1679128 pst 0000000060001000 29 total frames backtrace: #00 pc 0000000003e45128 /product/app/TrichromeLibrary64CN/TrichromeLibrary64CN.apk!libmonochrome_64.so (offset 0x8dc000) (BuildId: e8dcb611cc3cb26f7babf3e164d9395cfcab25c8) #01 pc 000000000606a694 /product/app/TrichromeLibrary64CN/TrichromeLibrary64CN.apk!libmonochrome_64.so (offset 0x8dc000) (BuildId: e8dcb611cc3cb26f7babf3e164d9395cfcab25c8) #02 pc 00000000070bed0c /product/app/TrichromeLibrary64CN/TrichromeLibrary64CN.apk!libmonochrome_64.so (offset 0x8dc000) (BuildId: e8dcb611cc3cb26f7babf3e164d9395cfcab25c8) #03 pc 0000000004286298 /product/app/TrichromeLibrary64CN/TrichromeLibrary64CN.apk!libmonochrome_64.so (offset 0x8dc000) (BuildId: e8dcb611cc3cb26f7babf3e164d9395cfcab25c8) #04 pc 0000000007b2a024 /product/app/TrichromeLibrary64CN/TrichromeLibrary64CN.apk!libmonochrome_64.so (offset 0x8dc000) (BuildId: e8dcb611cc3cb26f7babf3e164d9395cfcab25c8) #05 pc 0000000001fe2acc /product/app/TrichromeLibrary64CN/TrichromeLibrary64CN.apk!libmonochrome_64.so (offset 0x8dc000) (BuildId: e8dcb611cc3cb26f7babf3e164d9395cfcab25c8) #06 pc 0000000006b33844 /product/app/TrichromeLibrary64CN/TrichromeLibrary64CN.apk!libmonochrome_64.so (offset 0x8dc000) (BuildId: e8dcb611cc3cb26f7babf3e164d9395cfcab25c8) #07 pc 0000000006b3523c /product/app/TrichromeLibrary64CN/TrichromeLibrary64CN.apk!libmonochrome_64.so (offset 0x8dc000) (BuildId: e8dcb611cc3cb26f7babf3e164d9395cfcab25c8) #08 pc 0000000000014df8 /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+1200) (BuildId: cd6fe1a2f106f83ac0868f825dfc8390) #09 pc 00000000001e854c /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+48) (BuildId: 14a8ae10abcdb616b6621ca08b12b54e) 11-04 17:36:01.575113 1962 28969 D QC2PipelineCodec: [pipeE_avcE_78] pipelineid=101 handleOutputBufDone got vectorId=0 11-04 17:36:01.575119 1962 28969 D QC2PipelineCodec: [pipeE_avcE_78] pipelineid=101 handleOutputBufDone numOutputs=1 11-04 17:36:01.575120 6484 28034 D LogKit_AnrCrashDumpRunnable: #10 pc 0000000000af0390 /system/framework/arm64/boot-framework.oat (art_jni_trampoline+112) (BuildId: dec99815fa1bd74b87e09cff447774478ce45949) #11 pc 00000000006a2f9c /system/framework/arm64/boot-framework.oat (android.os.MessageQueue.nextLegacy+268) (BuildId: dec99815fa1bd74b87e09cff447774478ce45949) #12 pc 00000000006aa21c /system/framework/arm64/boot-framework.oat (android.os.MessageQueue.next+44) (BuildId: dec99815fa1bd74b87e09cff447774478ce45949) #13 pc 000000000069a998 /system/framework/arm64/boot-framework.oat (android.os.Looper.loopOnce+88) (BuildId: dec99815fa1bd74b87e09cff447774478ce45949) #14 pc 000000000069a8b8 /system/framework/arm64/boot-framework.oat (android.os.Looper.loop+296) (BuildId: dec99815fa1bd74b87e09cff447774478ce45949) #15 pc 00000000002f2af4 /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.main+1748) (BuildId: dec99815fa1bd74b87e09cff447774478ce45949) #16 pc 00000000004be060 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640) (BuildId: 13b8970099d35c13e2f5256887649a54) #17 pc 00000000004b4ef4 /apex/com.android.art/lib64/libart.so (_jobject* art::InvokeMethod<(art::PointerSize)8>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1628) (BuildId: 13b8970099d35c13e2f5256887649a54) #18 pc 000000000079e900 /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*) (.__uniq.165753521025965369065708152063621506277)+36) (BuildId: 13b8970099d35c13e2f5256887649a54) #19 pc 00000000003acb14 /system/framework/arm64/boot.oat (art_jni_trampoline+116) (BuildId: be44d58d0345926eaaa238bc707d9274c5f64ba7) #20 pc 0000000000a3a3c4 /system/framework/arm64/boot-framework.oat (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+116) (BuildId: dec99815fa1bd74b87e09cff447774478ce45949) #21 pc 0000000000a43c34 /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+5508) (BuildId: dec99815fa1bd74b87e09cff447774478ce45949) #22 pc 00000000004be060 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640) (BuildId: 13b8970099d35c13e2f5256887649a54) #23 pc 00000000004bcb78 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+916) (BuildId: 13b8970099d35c13e2f5256887649a54) #24 pc 0000000000811f80 /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+180) (BuildId: 13b8970099d35c13e2f5256887649a54) #25 pc 000000000010cacc /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+108) (BuildId: 14a8ae10abcdb616b6621ca08b12b54e) #26 pc 00000000001384e0 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+1020) (BuildId: 14a8ae10abcdb616b6621ca08b12b54e) #27 pc 0000000000002718 /system/bin/app_process64 (main+1624) (BuildId: 9d1c8ac843cff429ce808524242c9a73) #28 pc 0000000000082d60 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+124) (BuildId: f0468d2d3a31c553a7103b6114f35dc6) '}, anrInfo=null, eventType='native_crash', time=1762248959426, timeZone='GMT+08:00', count=1, fileId='185359c4-9572-40ad-a785-197e22667f16', filePath='null', fileDir='null'}
最新发布
11-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节卷动

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值