最近在ARM板子上移植 QtWebEngine-5.9.1 的一个浏览器时遇到了浮点运算的错误的问题。主要就是指数运算和对数运算的结果出错,有时候直接赋值也会出错 assert(0.0625 > 0.f)会得到false。有没有哪位遇到过类似的问题?板子是 ARMv7 Contex-A9 ,配有 NEON和 VFP(with 32 or 64 double-word registers)。编译时配置为 Contex-A9 VFPv3-D16.
我进行了浮点运算的测试,结果正常。而且查看其中一处经常出错的C++ 代码的汇编代码,发现其中并没有FPU指令。
如果不是浮点运算的问题,那就是QtWebEngine的代码的问题了。我建议可以把出错的问题代码抽取成比较小的测试用例,把问题范围缩小再分析。
我把其中一处出错的代码拿出来单独测试,结果正常。代码本书看不出有什么问题。同时编译的有一个QtWebKit 浏览器和 一个 QtWebEngine浏览器。QtWebKit浏览器运行正常,QtWebEngine浏览器会出现上面描述的崩溃现象。
上面这个图片是 libQt5WebKit.so readelf 输出的结果。
这张图片是 libQt5WebEngineCore.so readelf 输出的结果。
麻烦您看一下 这里面的参数有没有问题。
有没有可能是 字节对齐的问题?
从参数我也看不出什么问题。
>有没有可能是 字节对齐的问题?
没有了解这个项目,确实我不太好猜测是什么问题。如果你怀疑是字节对齐的问题,可以写非对齐的访问测试用例测试一下看看。
好的,多谢
哦,忘了说了,如果是字节不对齐的访问的问题,会出类似SIGBUG的异常,而不是浮点计算出错。所以很可能不是字节对齐的问题。
多谢,那就可以初步排除这种可能了。