免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: leslielg
打印 上一主题 下一主题

[C] wps for linux最近的重大bug [复制链接]

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
11 [报告]
发表于 2013-02-22 15:01 |只看该作者
同2楼,这诡异的操作目的是什么?

另外,有没有讨论的链接什么的?

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
12 [报告]
发表于 2013-02-22 15:09 |只看该作者
本帖最后由 zhaohongjian000 于 2013-02-22 15:36 编辑
bruceteen 发表于 2013-02-22 15:00
在 ILP64 数据模型下 int 就是64bits,你可以Google一下 ILP64


金山的软件显然不跑在这种机器上。基本上我们能见到的环境64位下int都是32位的。

如果val是float,那么valx100就是你说的405EDD2F20000000,不过这种情况下我这里valx100h也不是0.


修改:哦,搞错了把val改成float类型后值valx100值是405EDD2F20000000,和bruceteen说的值不同。

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
13 [报告]
发表于 2013-02-22 15:18 |只看该作者
回复 8# shan_ghost


    学习了。另外,x86的机器内部不是80位浮点吗,这么折腾还有意义吗?

论坛徽章:
0
14 [报告]
发表于 2013-02-22 15:19 |只看该作者
金山开发人员的新回复

“我们离开了工程环境也模拟不出来。
当时出问题的时候,情况是类似下面这样的。

出错的函数,我们暂且叫A函数,是inline的
另外有一个B函数,调用了A函数,B也是inline的
还有一个C函数,有两处调用B函数,C不是inline的

党我们把B函数去掉inline关键字之后,问题就消失了。
我们再把inline打开后,问题重现。
我们把编译选项-Os去掉后,问题就消失了,加回来就重现了,没有尝试过其他优化选项。

相关代码工程依赖比较多,当我们单纯的模拟上面的情况的时候,也不重现。
~_~”

论坛徽章:
0
15 [报告]
发表于 2013-02-22 15:20 |只看该作者
金山开发人员最新回复

“这段代码来自一个非常诡异的逻辑,主要是微软xls存储浮点数的一个逻辑
xls为了存储double类型时节约存储空间,会在某些情况下将某些double存储为4字节。
主要是为判断double的高4字节是不是全是0....”

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
16 [报告]
发表于 2013-02-22 15:26 |只看该作者

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
17 [报告]
发表于 2013-02-22 15:26 |只看该作者
本帖最后由 shan_ghost 于 2013-02-22 18:37 编辑
zhaohongjian000 发表于 2013-02-22 15:18


1、判断失误……我直接把bruceteen的数据当小端序内存映像看了。但那个实际是显示值,也就是大端序的。

2、浮点算法很慢。这和位数没关系,只要是浮点都慢。
而利用浮点存储格式进行转换甚至直接计算,就不必使用浮点算法,只需要位操作即可,速度自然就快得多得多了。
当然,根据后面的信息,他们并不是想做这个……

论坛徽章:
0
18 [报告]
发表于 2013-02-22 15:36 |只看该作者
但是这个跟他们说的优化的参数,还有是否inline有关系?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
19 [报告]
发表于 2013-02-22 15:41 |只看该作者
浮点数本身不精确,体现在二进制上差异很大,这个不能怪到gcc头上

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
20 [报告]
发表于 2013-02-22 15:53 |只看该作者
leslielg 发表于 2013-02-22 15:36
但是这个跟他们说的优化的参数,还有是否inline有关系?


瞎猜一把: 注意那个double数据的低位字节是全0;当inline时,实际相当于把函数体直接放进调用点,此时就可进行很多上下文相关的优化。

然后,-Os下,可能开启了某个优化,这个优化中有个类似偶之前犯的大小端序错误的bug,这就导致误把低位的全0当作高位截取(和我之前看错的那个性质相同)。

关掉-Os,或者去掉inline,这个优化就无法进行,也就不会引入这种bug了。

不过,如果是这样,那么对其它数据,也应该有结果总是算错这种软bug出现才是。所以感觉这个思路也还是不能自圆其说……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP