小心bug!慎用Java 7

开发 后端
Java 7 GA 今天发布了,但是如Uwe Schindler 所述,HotSpot Loop optimizations存在一些非常可怕的默认启用的bug。最好的情况下,这些bug会导致JVM崩溃,最坏的情况下,会导致loops的不正确的执行。

Java 7 GA 今天发布了,但是如Uwe Schindler 所述,HotSpot Loop optimizations存在一些非常可怕的默认启用的bug。***的情况下,这些bug会导致JVM崩溃,最坏的情况下,会导致loops的不正确的执行。

除非,除非在你的Java代码里面不用任何的loops。

附 Uwe Schindler 的邮件:

From: Uwe Schindler

Date: Thu, 28 Jul 2011 23:13:36 +0200

Subject: [WARNING] Index corruption and crashes in Apache Lucene Core / Apache Solr with Java 7

Hello Apache Lucene & Apache Solr users,

Hello users of other Java-based Apache projects,

Oracle released Java 7 today. Unfortunately it contains hotspot compiler

optimizations, which miscompile some loops. This can affect code of several

Apache projects. Sometimes JVMs only crash, but in several cases, results

calculated can be incorrect, leading to bugs in applications (see Hotspot

bugs 7070134 [1], 7044738 [2], 7068051 [3]).

Apache Lucene Core and Apache Solr are two Apache projects, which are

affected by these bugs, namely all versions released until today. Solr users

with the default configuration will have Java crashing with SIGSEGV as soon

as they start to index documents, as one affected part is the well-known

Porter stemmer (see LUCENE-3335 [4]). Other loops in Lucene may be

miscompiled, too, leading to index corruption (especially on Lucene trunk

with pulsing codec; other loops may be affected, too - LUCENE-3346 [5]).

These problems were detected only 5 days before the official Java 7 release,

so Oracle had no time to fix those bugs, affecting also many more

applications. In response to our questions, they proposed to include the

fixes into service release u2 (eventually into service release u1, see [6]).

This means you cannot use Apache Lucene/Solr with Java 7 releases before

Update 2! If you do, please don't open bug reports, it is not the

committers' fault! At least disable loop optimizations using the

-XX:-UseLoopPredicate JVM option to not risk index corruptions.

Please note: Also Java 6 users are affected, if they use one of those JVM

options, which are not enabled by default: -XX:+OptimizeStringConcat or

-XX:+AggressiveOpts

It is strongly recommended not to use any hotspot optimization switches in

any Java version without extensive testing!

In case you upgrade to Java 7, remember that you may have to reindex, as the

unicode version shipped with Java 7 changed and tokenization behaves

differently (e.g. lowercasing). For more information, read

JRE_VERSION_MIGRATION.txt in your distribution package!

On behalf of the Lucene project,

Uwe

[1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7070134

[2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7044738

[3] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7068051

[4] https://issues.apache.org/jira/browse/LUCENE-3335

[5] https://issues.apache.org/jira/browse/LUCENE-3346

[6] http://s.apache.org/StQ

原文:http://www.oschina.net/news/20170/java7-bug

【编辑推荐】

  1. Java 7正式发布
  2. 漫谈Java 7的新特性与C# 2.0的相似之处
  3. 揭秘NetBeans 7.0中的Java 7基因
  4. NetBeans IDE 7.0 正式版发布,面向Java 7
  5. Java走向分裂源于Java 7的到来?
责任编辑:陈贻新 来源: 开源中国社区
相关推荐

2011-08-05 16:20:32

Java 7HotspotBug

2009-09-02 08:55:36

Windows 7硬盘分区

2017-10-19 17:24:00

iOS 11安全bug私密照

2022-05-27 07:03:04

JDK场景线程

2010-06-30 10:34:39

女人男人

2011-04-07 09:32:49

递归

2016-10-17 19:14:28

2012-02-29 17:29:11

2022-07-13 11:06:21

SSD数据故障

2020-06-15 08:39:41

调试工具

2016-10-17 08:58:23

Windows 7杀毒账号

2012-12-28 14:38:15

阿里云百度云腾讯云

2024-04-29 14:39:20

2023-09-27 10:19:37

类型video函数

2009-12-25 15:38:46

2022-08-31 22:50:13

JavaScript函数JSON

2009-03-13 19:24:58

Windows7Bug启动

2010-01-21 08:50:27

2009-08-14 09:04:04

Vista升级Windows 7重启bug

2009-02-27 09:50:11

微软Windows 7修正
点赞
收藏

51CTO技术栈公众号