news 2026/8/13 8:26:11

一个由代码规范性导致的bug:结构体没有memset导致的Segmentation fault (core dumped)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一个由代码规范性导致的bug:结构体没有memset导致的Segmentation fault (core dumped)

目录

1 原始代码

2 修改后代码

3 其他类似的代码规范


1 原始代码

else if ("MIGRAPHX" == ort_ep) { OrtMIGraphXProviderOptions migraphx_options; migraphx_options.device_id = instance_group_device_id; migraphx_options.migraphx_fp16_enable=0; migraphx_options.migraphx_int8_enable=0; RETURN_IF_ORT_ERROR(ort_api->SessionOptionsAppendExecutionProvider_MIGraphX( soptions, &migraphx_options)); printf("model: %s ort_ep is ================ %s\n", (*model_path).c_str(), ort_ep.c_str()); }

报错

name is =============MIGRAPHX model: ./test_models_yolov7tiny/resnet_50/1/model.onnx ort_ep is ================ ROCM model: ./test_models_yolov7tiny/yolov5m/1/model.onnx ort_ep is ================ MIGRAPHX MIGraphX Error: /home/migraphx/src/file_buffer.cpp:38: generic_read_file: Failure opening file: name is =============MIGRAPHX

然后包段错误Segmentation fault (core dumped)了,

2 修改后代码

最终排查,修改代码为

else if ("MIGRAPHX" == ort_ep) { // MIGraphX Execution Provider OrtMIGraphXProviderOptions migraphx_options; memset(&migraphx_options, 0, sizeof(migraphx_options)); migraphx_options.device_id = instance_group_device_id; // 建议默认关闭 fp16 / int8,由模型显式控制 migraphx_options.migraphx_fp16_enable = 0; migraphx_options.migraphx_int8_enable = 0; RETURN_IF_ORT_ERROR( ort_api->SessionOptionsAppendExecutionProvider_MIGraphX( soptions, &migraphx_options)); LOG_MESSAGE( TRITONSERVER_LOG_VERBOSE, (std::string("MIGraphX Execution Provider is set for model '") + Name() + "' on device " + std::to_string(instance_group_device_id)) .c_str()); }

其实增加一行memset就可以解决了。因为里面的某些垃圾值导致的报错。

海康威视的代码规范性要求结构体必须memset,否则大组内邮件通报批评,现在理解了。

3 其他类似的代码规范

  • 变量声明时要进行初始化
  • 指针生命时要赋值NULL或nullptr
  • 结构体或者申请的内存,都要进行memset
  • 指针free之后要赋值为nullptr
  • 函数内部刚进去要对所有的参数进行规范性检查
  • 要对函数的返回值进行检查
  • ... ... ...
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 11:32:41

创客匠人:知识IP进阶之路,从“想做很多”到“只做一个爆品”

在知识付费与内容创业蓬勃发展的今天,我们与成千上万的老师、咨询师、教练以及知识创业者同行。创客匠人作为专注于为知识从业者提供技术支持与商业服务的平台,见证了一个又一个真实成长的故事。我们发现,那些最终跑出来、活得久、做得稳的知…

作者头像 李华
网站建设 2026/8/9 23:49:51

3步搭建:Tailwind Next.js博客模板的终极部署指南

3步搭建:Tailwind Next.js博客模板的终极部署指南 【免费下载链接】tailwind-nextjs-starter-blog This is a Next.js, Tailwind CSS blogging starter template. Comes out of the box configured with the latest technologies to make technical writing a breez…

作者头像 李华
网站建设 2026/8/12 12:58:30

Web3开发者的核心安全最佳实践:智能合约漏洞防御指南

在Web3中,开发者面临的风险是天文数字般的。智能合约中的一个漏洞不仅会导致404错误,更可能造成用户资金数百万美元的永久损失。区块链的不可变性意味着没有重来的机会。安全不是一个功能;它是这个领域构建任何事物的绝对前提。 本指南概述了…

作者头像 李华
网站建设 2026/8/12 22:22:30

vue基于Python物流管理系统_ _Pycharm django flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 …

作者头像 李华
网站建设 2026/8/10 22:52:29

百度网盘秒传链接工具:全平台可用的终极使用指南

百度网盘秒传链接工具:全平台可用的终极使用指南 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 在当今数字化时代,文件分享…

作者头像 李华
网站建设 2026/8/12 11:52:09

Seed-VR2企业级AI部署战略:6GB显存重塑视频增强成本效益模型

Seed-VR2企业级AI部署战略:6GB显存重塑视频增强成本效益模型 【免费下载链接】SeedVR2-7B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/SeedVR2-7B 战略定位:从技术参数到商业价值的思维转型 在AI技术快速商业化的今天&#x…

作者头像 李华