Appweb运行时coredump问题分享
【摘要】 开源组件Appweb迁移到鲲鹏920时,虽然编译通过,但是由于源码中判断平台是否支持64bit的逻辑中没有aarch64选项,造成运行时coredump
一 问题背景
客户反馈appweb组件迁移到鲲鹏920平台运行时出现coredump。
二原因分析
1通过gdb和日志定位发现在x86平台和arm平台,appweb的findFirstBit(localMap)对同一个long型数据处理结果存在差异: findFirstBit的定义中如果平台支持64位,对参数localMap按照64位进行处理,否则按照32位支持;
2.判断平台是否支持64位的逻辑中没有找到__aarch64__预定义,导致编译时把鲲鹏920当做32位平台处理
三 解决方案
修改appweb源码,在判断平台支持64位的逻辑中加上__aarch64__,让编译器识别到鲲鹏920支持64位。
appweb-7.2.0 /src/osdep/osdep.h 244行
#if __WORDSIZE == 64 || __amd64 || __x86_64 || __x86_64__ || _WIN64 || __mips64 || __arch64__ || __arm64__
修改为:
#if __WORDSIZE == 64 || __amd64 || __x86_64 || __x86_64__ || _WIN64 || __mips64 || __arch64__ || __arm64__ || __aarch64__
四 总结
开源组件从x86平台迁移到鲲鹏920上,在编译前建议排查一遍平台相关的参数设置,能够编译通过不代表运行正常
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)