Appweb运行时coredump问题分享

举报
阿刚 发表于 2020/02/13 15:35:08 2020/02/13
【摘要】 开源组件Appweb迁移到鲲鹏920时,虽然编译通过,但是由于源码中判断平台是否支持64bit的逻辑中没有aarch64选项,造成运行时coredump

一 问题背景

客户反馈appweb组件迁移到鲲鹏920平台运行时出现coredump。


二原因分析

1通过gdb和日志定位发现在x86平台和arm平台,appwebfindFirstBit(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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。