ncnn报null pointer dereference异常

article/2025/10/8 3:37:41

错误描述

基于c++使用ncnn封装了深度学习模型,并将c++项目打包成为了一个so库给Android调用,在打包成为so库之前,在Windows系统以及Ubuntu系统利用电脑的camera测试过都能正常运行没有任何异常,打包成so库之后给Android的开发人员调用时,直接报了一个null pointer dereference错误,并且APP直接奔溃

错误定位

对于打包的so库不好定位错误的位置,能够提供的信息都是内存地址相关信息,所以我们需要先通过这些错误信息提供的内存地址来定位so库报错的位置。Android的NDK提供了一个addr2line工具,我们可以通过这个工具结合内存地址查看c++项目中报错文件的行数信息

  • linux系统
cd android-ndk-r21/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin
#后面的地址信息,是调用so库时报错所指向的地址,从后面(so库最后一个地址)往前
#最前的地址指向的信息可能是第三方库或者系统文件的位置,我们需要确定的是我们代码的错误位置
./arm-linux-androideabi-addr2line -e *.so 0006b8f7 00022683 0006f159 0008845f
  • Windows系统
#默认目录
cd C:\Users\用户\AppData\Local\Android\Sdk\ndk\21.0.6113669\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin
arm-linux-androideabi-addr2line.exe *.so 0006b8f7 00022683 0006f159 0008845f

通过上面的信息可以定位到你封装so库项目的报错位置,最终我定位到

ex.extract

就是在使用ncnn加载模型之后,通过Extractor来获取网络提取的节点信息时报错了

错误原因分析

在定位到错误之后,我们就可以来分析一下这个错误原因,ncnn的extract函数提供了一个返回值信息,可以打印一下看看,如果是0就说明成功了,返回值如果是-100就说明提取失败。我这里的返回值是-100,然后我还测试了一下ex.input("data", in)函数的返回值,发现是0,说明这个是成功了。

这也就说明了代码本身没有问题,那么问题在哪呢?肯定是输入的图片数据出问题

解决办法

既然是数据出问题了,我们就检查一下图片的通道和尺寸

  • 检查输入图片是否为空
  • 查看模型图片的输入通道

首先查看模型输入是3通道4通道还是单通道,然后再确定输入图片的通道数是否和模型输入一致。还需要确定模型输入的通道顺序和输入图片的通道顺序是否一致,如果不一致会导致模型预测效果变差

  • 查看输入图片的尺寸

输入图片的尺寸是否符合模型输入的尺寸。除此之外,还有一点需要特别注意,有时候你会发现图片的输入尺寸和模型输入尺寸一致时,extract函数在提取节点信息的时候还是返回-100,这时候需要确定数据的编码和解码是否存在问题。

我遇到的问题时,在使用手机前置摄像头拍照的时候,Android开发人员传给我的照片的宽和高反过来了,主要是因为他在使用android camera2获取摄像头图片的时候没有进行旋转,后面旋转过来之后图片的尺寸正常,但是还是报异常。后面我发现他传过来的图片大小有十几M,而我用前置摄像头正常拍照只有几M,最终改了他的解码方式,完美解决了这个问题。

 


http://chatgpt.dhexx.cn/article/bIYNcBn7.shtml

相关文章

win10用黑屏命令查看正在使用的或使用过的wifi密码

win10用黑屏命令查看正在使用的或使用过的wifi密码 打开黑屏终端: 方法一:win菜单键 R打开运行窗口,输入:cmd ,就可以进入黑屏终端了。方法二:回到桌面,点击win菜单图标旁的搜索,输…

物理机安装linux黑屏,安装ubuntu时黑屏的解决办法(3种)

我电脑显卡是Nvidia显卡~ 重启之后屏幕显示“输入不支持”,这是因为ubuntu对显卡的支持有关,需要手动添加显卡选项:nomodeset,使其支持Nvidia系列显卡 方法一 进入安装时,光标移动到"install ubuntu"&#x…

yum指令安装失败,或导致图形界面黑屏如何解决

前言 最近在学习linux中遇到一个小问题,发现卸载重装firefox导致图形界面黑屏,黑屏之前弹出一个警告。我又重装了几次虚拟机,发现每次都会出现这种错误,最终发现是SELinux设置导致这样的问题。 问题产生和解决 操作步骤如下&am…

本人账户登录计算机黑屏,电脑开机输入系统密码后就黑屏了,怎么办

输入登录账号密码以后出现故障和问题,跟开机立刻黑屏故障有本质区别,而因为跟登录账户有一定关联, 所以可以断定是因为exploer.exe进程造成的 很多时候进不去桌面,黑屏不显示,很可能是电脑刚开机,有很多的启动项在后台运行,反应迟钝,建议关闭不必要的启动项,一些软硬件…

python黑屏改成白底_Python 进行黑屏 PNR 的提取

重拾 Python 的学习,二刷了 Learn python the hard way 和廖雪峰老师的教程后,还是有点懵逼。考虑到日常工作常会给出一些逻辑判断相关的需求。就想尝试写一二个,毕竟学以致用。 最近给DT哥哥提了一个从中航信系统的返回内容提取 PNR 的逻辑…

计算机黑屏但是有鼠标,电脑桌面黑屏怎么解决 电脑黑屏怎么办 - 云骑士一键重装系统...

Ready 品牌型号:联想GeekPro 2020 系统:win10 1909 64位企业版 部分用户可能电脑型号不一样,但系统版本一致都适合该方法。 电脑桌面黑屏只有鼠标光标怎么办?下面就给大家分享电脑桌面黑屏只有鼠标光标的解决方法。 方法一: 按Ct…

ubantu 黑屏_死机黑屏专题上线啦,早鸟只要299,看完薪水翻一番

全程约5小时高清,140多页ppt,8大实验,基于x86_64的Centos 7.6和arm64,提供全套实验素材和环境。全面介绍kdumpcrash在死机黑屏方面的实战应用,全部案例源自线上云服务器和嵌入式产品开发实际案例! 看死机黑…

C语言程序运行黑屏,Win7开机黑屏代码0XC000000F的原因及解决方法

原标题:Win7开机黑屏代码0XC000000F的原因及解决方法 Win7开机黑屏出现0XC000000F代码是怎么回事?最近有用户朋友的电脑开机就遇到了这个问题,向云骑士求助。今天云骑士把解决该问题的方法整理一下,与大家一起分享。 原因分析: 这…

前端排查WebRtc黑屏记录

背景 本人前端开发,在做webrtc视频通话时,在部分安卓手机端,接收webrtc视频流黑屏,由于对webrtc不是太熟悉,一时不知道该如何下手排查。 第一步,发现问题的是安卓手机的webview,查看了webview版…

安装linux系统 黑屏,Ubuntu 16.04安装时显示器黑屏处理

问题描述: (1)Ubuntu 16.04使用USB启动盘安装时,出现"try ubuntu without installation"或“install ubuntu”选择,Enter选择安装后,显示器黑屏无任何显示。 (2)当Ubuntu系统安装结束后,系统启动后显示器黑屏…

计算机黑屏死机,电脑黑屏死机怎么解决(一键修复电脑黑屏死机的方式)

世界上有很多东西都会随着时间发生改变,但是Windows的BUG却不会。 对于微软来说,Windows系统在更新的同时又带来一堆BUG,已经是一项传统艺能。 放眼全球,大部分用户都曾遭到过Windows蓝屏死机的折磨。 资料显示,蓝屏死…

RV1109--LCD黑屏问题

RV1109–LCD黑屏问题 1、问题描述 平台:RV1109 需求:兼容一块10.1寸mipi的LCD屏(1218-A101NL66-28K),是rv1109的第10块屏幕,使用lcd_index10(lcd_index涉及到我司兼容LCD方式)来标…

C++实现系统黑屏

定义 电脑黑屏通常有两种定义,一种是指硬件黑屏,包括但不限于硬件故障、断电、显示器被硬件或软件关闭等;另一种是指系统层面上的黑屏,两种黑屏的最大差别就是系统层面上的黑屏会发光,而硬件黑屏则基本上不会。 这里…

C语言课程设计项目

C语言课程设计项目 团队介绍单位名怀化学院计算机科学与工程学院班级小组序号1901班第八组团队名称潜力无限组课程设计题目学生限时答题评测系统 一、课程设计题目基本要求介绍 (1) 输入信息:学生输入自己的学号姓名作为学生基本信息&…

C语言源码做的通讯录管理系统课程设计(源码+课程设计报告)

一、课程设计的目的: C语言课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言程序设计的知识点,又接近工程实际需要。本次设计的目的是通过课程设计的综合训练&#xf…

C语言源码做的班级档案管理系统课程设计(源码+课程设计报告)

一、课程设计的目的: C语言课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言程序设计的知识点,又接近工程实际需要。本次设计的目的是通过课程设计的综合训练&#xf…

【C++程序设计】课程设计报告

作者:何翔 学院:计算机学院 学号:04191315 班级:软件1903 完整资料:https://download.csdn.net/download/HXBest/75523613 项目资料下载:https://download.csdn.net/download/HXBest/21947475

C语言——课程设计

一、实验目的 了解开发环境掌握结构体变量的定义和使用;掌握结构体数组的定义和使用;掌握文件输入,输出基本方法掌握函数用法 二、实验内容 【项目1】完成以下功能的设计。 此学生成绩管理可以实现对学生成绩及基本信息进行创建、添加、删…

学生成绩管理系统-C语言(附源码和课程设计报告)

学生成绩管理系统-C语言&#xff08;附源码和课程设计报告&#xff09; 这是我初学C语言时的课程设计作业&#xff0c;源码贴出来希望对有需要的小伙伴有所帮助 系统功能层次图 头文件源代码 #include<stdio.h> #include<stdlib.h> #define FILENAME"stude…

通讯录管理系统 C语言课程设计实验报告

通讯录管理系统C语言课程设计 一、实验目的 1.巩固和加深学生对C语言课程的基本知识的理解和掌握 2.掌握C语言编程和程序调试的基本技能 3.利用C语言进行基本的软件设计 4.掌握书写程序设计说明文档的能力 5.提高运用C语言解决实际问题的能力 二.程序要求 学生信息包括&#x…