news 2026/6/10 19:40:05

一个由代码规范性导致的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/6/9 18:57:52

强力教程:3步掌握X-AnyLabeling中GeCO模型的目标计数技术

想要快速实现图像中的目标计数和人群密度分析吗?X-AnyLabeling结合GeCO模型提供了一个完整的解决方案!作为一款基于AI的数据标注工具,X-AnyLabeling通过集成Segment Anything模型和其他先进算法,让目标检测和计数变得前所未有的简…

作者头像 李华
网站建设 2026/6/10 11:49:40

数据中台不只是技术:让业务人员也能玩转的数据协同逻辑

数据中台不只是技术:让业务人员也能玩转的数据协同逻辑 “我们有数据中台,但没有数据。”这是许多业务部门负责人的真实心声。数字化转型浪潮下,企业投入巨资构建了技术先进的数据中台,旨在打通数据孤岛、驱动业务创新。然而&…

作者头像 李华
网站建设 2026/6/10 14:10:03

Flutter引擎富文本渲染深度剖析:跨平台渲染架构与性能优化实战指南

在移动应用开发领域,富文本渲染性能直接影响用户体验,特别是面对长篇文档、即时通讯等场景。Flutter Engine作为跨平台渲染的核心引擎,其富文本处理机制通过精密的系统资源调度和渲染管线优化,实现了复杂文本的高效渲染。本文将深…

作者头像 李华
网站建设 2026/6/10 5:10:36

macOS应用轻松管理,Applite让Homebrew Casks一目了然

项目标题与描述 Applite Applite 是一款用户友好的 macOS 图形用户界面应用程序,专为管理 Homebrew Casks 设计。它是一个免费开源项目,致力于为非技术用户提供一个便捷、直观的“应用商店”,用于安装和管理通过 Homebrew Cask 分发的第三方…

作者头像 李华
网站建设 2026/6/10 12:26:29

Pearcleaner:macOS应用彻底清理的终极免费工具

Pearcleaner:macOS应用彻底清理的终极免费工具 【免费下载链接】Pearcleaner Open-source mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 想要彻底清理macOS系统中的应用程序残留文件吗?Pearcleaner作为一款开源免费…

作者头像 李华
网站建设 2026/6/10 12:31:44

2025最新流出9款免费AI论文工具:真实参考文献查重低原创高!

凌晨3点,你的论文deadline只剩24小时?查重率飙到30%、AI检测率超标、导师反馈堆成山、复杂公式图表不会做?别慌!2025最新流出的9款免费AI论文工具,尤其是核心推荐的PaperFine,能让你10分钟生成万字初稿、2小…

作者头像 李华