当前位置: 首页 > 面试题库 >

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

丁景山
2023-03-14
问题内容

我遇到了一个有趣的情况。同事进行了一些更改,这些更改既不能从IDE(Eclipse)也不能从命令行(Maven)在我的机器上编译。该问题表现在使用100%CPU的编译过程中,仅杀死该过程将有助于停止该过程。经过一些分析,找到了问题的原因并解决了。结果是其中一个接口中的行“
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)和一个补丁(对于Oracle JVM,也适用于OpenJDK)。

根据补丁,所有这些都归结为一个错误的错误。



 类似资料:
  • 当我使用“loglevel=all”时,我得到一行输出“checking for updates”,然后它挂起。 我尝试创建一个新的项目并复制源文件--没有改变。

  • 问题内容: 当我尝试通过发出命令“ g ++ qr.cpp -o qr”来编译此文件时,系统挂起。我在其他任何地方都没有看到这种错误。 我的编译器版本信息如下。 问题答案: 你知道这些有多大吗? 每个至少1GB !!!您将要动态分配它们…

  • 我目前正在尝试实现一些Groovy编译时AST转换,但遇到了麻烦: 如何为字段的赋值语句指定AST转换?i、 e.AST转换应转换以下代码: 变成类似的东西 我用这个AST构建器调用进行了尝试: 但在声明类的“init”方法中插入结果语句后,它反而插入了一个变量赋值,如 我浏览了Ast Builder TestCase中包含的示例,但它们只涵盖了类主体中的字段声明,而不是字段分配。我自己使用的尝试

  • 本文向大家介绍基于python的字节编译详解,包括了基于python的字节编译详解的使用技巧和注意事项,需要的朋友参考一下 定义: 把模块定义成二进制语言程序的这个过程叫做字节编译 python是解释型语言,它的字节编译是由解释器完成的 编译py文件,生成pyc结尾的文件的方法, 方法一: Import zipfile.py 方法二: 以上这篇基于python的字节编译详解就是小编分享给大家的全部

  • 问题内容: python中已编译的正则表达式的类型是什么? 我特别要评估 确实是出于自省的目的。 我有一个解决方案,就是拥有一些全局常量,但是它看起来并不十分优雅。 编辑: 我想这样做的原因是因为我有字符串列表和已编译的正则表达式对象。我想根据列表“匹配”字符串 对于列表中的每个字符串,请尝试检查字符串是否相等。 对于列表中的每个正则表达式,请尝试检查字符串是否与给定的模式匹配。 我想到的代码是:

  • 问题内容: 我正在使用SQL查询,然后使用Hibernates的转换结果。我的查询中的一列是枚举。对于枚举,转换以某种方式失败了。我该怎么办?我应该使用哪种数据类型?我想要多个字符将结果转换为我的枚举类型。 这是我的查询/代码的简化版本的样子( b 是表配置文件中的枚举): 例外情况: 问题答案: 假设与列b对应的Java枚举类型为Foo.ProfileStateEnum,则以下代码段将为您工作。