news 2026/6/23 18:43:14

一个由代码规范性导致的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/23 3:36:55

SystemInformer语言定制:从英文界面到多语言自由切换

SystemInformer语言定制:从英文界面到多语言自由切换 【免费下载链接】systeminformer A free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solutions…

作者头像 李华
网站建设 2026/6/23 18:22:48

事件驱动架构中的消息可靠性:Watermill与RabbitMQ实战深度解析

事件驱动架构中的消息可靠性:Watermill与RabbitMQ实战深度解析 【免费下载链接】watermill Building event-driven applications the easy way in Go. 项目地址: https://gitcode.com/GitHub_Trending/wa/watermill 作为分布式系统架构师,我们每天…

作者头像 李华
网站建设 2026/6/23 18:23:58

Python+Vue的瑜伽体验课预约系统 Pycharm django flask

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

作者头像 李华
网站建设 2026/6/22 18:58:26

彻底解决Git跨平台开发难题:专业.gitattributes模板集合

彻底解决Git跨平台开发难题:专业.gitattributes模板集合 【免费下载链接】gitattributes 项目地址: https://gitcode.com/gh_mirrors/gita/gitattributes 你是否曾经在Windows、Linux和macOS之间切换开发时,频繁遇到换行符冲突问题?&…

作者头像 李华
网站建设 2026/6/22 22:39:46

腾讯混元视频生成模型完整技术解析

腾讯混元视频生成模型完整技术解析 【免费下载链接】HunyuanVideo 项目地址: https://ai.gitcode.com/hf_mirrors/tencent/HunyuanVideo 想象一下,只需输入一段文字描述,AI就能为你生成一段720p的流畅视频。这不再是科幻电影中的场景&#xff0c…

作者头像 李华