gpt4 book ai didi

java - 对于字段为 double d = 2.2250738585072012e-308 的类,编译会挂起

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:00:33 31 4
gpt4 key购买 nike

我遇到了一个有趣的情况。一位同事提交了一些更改,这些更改不会在我的机器上从 IDE (Eclipse) 或命令行 (Maven) 编译。问题表现在编译过程占用 100% CPU,只有 kill 进程才能停止。经过一番分析,找到并解决了问题的原因。原来是其中一个界面中的一行“double d = 2.2250738585072012e-308”(末尾没有分号)。以下片段复制了它。

public class WeirdCompilationIssue {
double d = 2.2250738585072012e-308
}

为什么编译器会挂起?语言边缘案例?

最佳答案

这是 JVM 的 String-to-double 转换算法中的一个错误:http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/

如果您尝试在运行时解析该字符串,您可能会遇到同样的问题。编译器挂起是因为它使用了相同的代码(毕竟是 Java 程序)。

更新:问题现在有一个 CVE标识符 ( CVE-2010-4476 ) 和 a patch (对于 Oracle JVM,也适用于 OpenJDK)。

根据 the patch这一切都归结为一个差一错误。

关于java - 对于字段为 double d = 2.2250738585072012e-308 的类,编译会挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4895857/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com