Gcc 未处理的3级权限错误(11)[运行gdb时错误消失…!] 我试图在一个AGAR64(ARM 8)上运行我的C++应用程序。当使用GDB运行时,应用程序运行没有任何问题。但除此之外,它会给我一个分段错误。***我检查了dmesg,结果如下 unhandled level 3 permission fault (11) at 0x004ac010, esr 0x8300000f [241808.064733] pgd = ffffffc0fe270000 [241808.068270] [004ac010] *pgd=00000001615c9003, *pmd=000000016f316003, *pte=02e0000147f42f53 [241808.076813] [241808.076824] CPU: 2 PID: 12503 Comm: Jumpi Not tainted 3.10.67-g3a5c467 #1 [241808.076832] task: ffffffc0fef9c080 ti: ffffffc0f0fe4000 task.ti: ffffffc0f0fe4000 [241808.076841] PC is at 0x4ac010 [241808.076846] LR is at 0x401cb8 [241808.076852] pc : [<00000000004ac010>] lr : [<0000000000401cb8>] pstate: 20000000 [241808.076857] sp : 0000007fc044b600 [241808.076863] x29: 0000007fc044b680 x28: 0000000000000000 [241808.076873] x27: 0000000000000000 x26: 0000000000000000 [241808.076882] x25: 00000000004186ec x24: 0000000000418634 0x004ac010、esr 0x8300000f处未处理的3级权限错误(11) [241808.064733]pgd=FFFFFF C0FE270000 [241808.068270][004ac010]*pgd=0000000 1615C9003,*pmd=0000000 16F316003,*pte=02e0000147f42f53 [241808.076813] [241808.076824]CPU:2 PID:12503通信:跳线未受污染3.10.67-g3a5c467#1 [241808.076832]任务:FFFFFF C0FEF9C080 ti:FFFFFF C0F0FE4000任务。ti:FFFFFF C0F0FE4000 [241808.076841]PC位于0x4ac010 [241808.076846]LR位于0x401cb8 [241808.076852]pc:[]lr:[]pstate:20000000 [241808.076857]sp:000000 7FC044B600 [241808.076863]x29:0000007fc044b680 x28:0000000000000000 [241808.076873]x27:0000000000000000 x26:0000000000000000 [241808.076882]x25:0000000000 4186EC x24:0000000000 418634

Gcc 未处理的3级权限错误(11)[运行gdb时错误消失…!] 我试图在一个AGAR64(ARM 8)上运行我的C++应用程序。当使用GDB运行时,应用程序运行没有任何问题。但除此之外,它会给我一个分段错误。***我检查了dmesg,结果如下 unhandled level 3 permission fault (11) at 0x004ac010, esr 0x8300000f [241808.064733] pgd = ffffffc0fe270000 [241808.068270] [004ac010] *pgd=00000001615c9003, *pmd=000000016f316003, *pte=02e0000147f42f53 [241808.076813] [241808.076824] CPU: 2 PID: 12503 Comm: Jumpi Not tainted 3.10.67-g3a5c467 #1 [241808.076832] task: ffffffc0fef9c080 ti: ffffffc0f0fe4000 task.ti: ffffffc0f0fe4000 [241808.076841] PC is at 0x4ac010 [241808.076846] LR is at 0x401cb8 [241808.076852] pc : [<00000000004ac010>] lr : [<0000000000401cb8>] pstate: 20000000 [241808.076857] sp : 0000007fc044b600 [241808.076863] x29: 0000007fc044b680 x28: 0000000000000000 [241808.076873] x27: 0000000000000000 x26: 0000000000000000 [241808.076882] x25: 00000000004186ec x24: 0000000000418634 0x004ac010、esr 0x8300000f处未处理的3级权限错误(11) [241808.064733]pgd=FFFFFF C0FE270000 [241808.068270][004ac010]*pgd=0000000 1615C9003,*pmd=0000000 16F316003,*pte=02e0000147f42f53 [241808.076813] [241808.076824]CPU:2 PID:12503通信:跳线未受污染3.10.67-g3a5c467#1 [241808.076832]任务:FFFFFF C0FEF9C080 ti:FFFFFF C0F0FE4000任务。ti:FFFFFF C0F0FE4000 [241808.076841]PC位于0x4ac010 [241808.076846]LR位于0x401cb8 [241808.076852]pc:[]lr:[]pstate:20000000 [241808.076857]sp:000000 7FC044B600 [241808.076863]x29:0000007fc044b680 x28:0000000000000000 [241808.076873]x27:0000000000000000 x26:0000000000000000 [241808.076882]x25:0000000000 4186EC x24:0000000000 418634,gcc,gdb,arm,valgrind,arm64,Gcc,Gdb,Arm,Valgrind,Arm64,我尝试在gdb中禁用随机化,但仍然没有错误。然后我尝试了valgrind。我收到很多错误消息,说创建了Unitalized value,主要是在dl_init_路径上。但更重要的是,我在一个内存地址上获得了生成SISGEV的错误权限,当我遍历内存时,该地址似乎在(env_path_列表)中。 在调试了几个小时后,我就在这里。如果有人对下一步有任何建议/想法,那会很有帮助。 另一个有趣的事实是,当使用交叉编译器编译相同的代码并在这个(ARM8)上运行时,它工作得很好 您可以在“esr”寄存器中找到

我尝试在gdb中禁用随机化,但仍然没有错误。然后我尝试了valgrind。我收到很多错误消息,说创建了Unitalized value,主要是在dl_init_路径上。但更重要的是,我在一个内存地址上获得了生成SISGEV的错误权限,当我遍历内存时,该地址似乎在(env_path_列表)中。 在调试了几个小时后,我就在这里。如果有人对下一步有任何建议/想法,那会很有帮助。
另一个有趣的事实是,当使用交叉编译器编译相同的代码并在这个(ARM8)上运行时,它工作得很好

您可以在“esr”寄存器中找到故障的详细原因,该寄存器已打印在崩溃转储中。您可以使用armv8 spec对“esr”寄存器的值进行解码。

您可以在“esr”寄存器中找到故障的解除验证原因,该寄存器已打印在崩溃转储中。您可以使用armv8 spec对“esr”寄存器的值进行解码。

根据这些地址的猜测,您似乎正在尝试执行数据段,这有点未初始化指针的味道。我的心理预测是,在某个地方,你正在对一个被释放的对象调用一个虚拟方法。你看了核心转储吗?根据这些地址的猜测,看起来你在试图执行你的数据段,这有点像一个未初始化的指针。我的心理预测是,你正在某个地方调用一个释放对象上的虚拟方法。你看到核心转储了吗?@kfsone实际上是的,原因已经在崩溃转储-权限错误中提到过。顺便说一句,作者可以使用aarch64 cross tools中的objdump工具读取elf文件,并尝试找出问题所在。好的起点是使用LR寄存器(0x401cb8)的值来创建问题代码。@kfsone实际上是的,原因已经在崩溃转储-权限错误中提到过。顺便说一句,作者可以使用aarch64 cross tools中的objdump工具读取elf文件,并尝试找出问题所在。好的起点是使用LR寄存器(0x401cb8)的值来创建问题代码。