01e*_*1es 7 java compilation javac
我遇到了一个有趣的情况.同事提交了一些更改,这些更改无法在我的计算机上从IDE(Eclipse)或命令行(Maven)进行编译.在编译过程中出现的问题表现在100%CPU并且只杀死进程将有助于阻止它.经过一些分析后,找到并解决了问题的原因.事实证明,其中一个接口是"双d = 2.2250738585072012e-308"(最后没有分号).以下剪辑重复了它.
public class WeirdCompilationIssue {
double d = 2.2250738585072012e-308
}
Run Code Online (Sandbox Code Playgroud)
为什么编译器会挂起?一个语言边缘案例?
Joa*_*uer 16
这是JVM的String-to-double转换算法中的一个错误:http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/
如果尝试在运行时解析该字符串,则可以获得相同的挂起.编译器挂起,因为它使用相同的代码(毕竟它是一个Java程序).
更新:该问题现在具有CVE标识符(CVE-2010-4476)和补丁(对于Oracle JVM,也适用于OpenJDK).
根据补丁,这一切归结为一个错误.
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |