United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-6233005 : Random javac failures on server VM

Details
Type:
Bug
Submit Date:
2005-02-25
Status:
Resolved
Updated Date:
2010-05-09
Project Name:
JDK
Resolved Date:
2005-04-20
Component:
hotspot
OS:
solaris_9
Sub-Component:
compiler
CPU:
other
Priority:
P1
Resolution:
Fixed
Affected Versions:
6
Fixed Versions:

Related Reports
Backport:
Backport:
Relates:
Relates:
Relates:
Relates:
Relates:
Relates:

Sub Tasks

Description
We're experiencing problems with the server VM when building
J2SE.  It is not easy to make a small reproducible test case,
but we can provide access to the failing workspace.

I'm not able to reproduce the problem on the client VM.  Also,
if I use -J-Xint the problem goes away.

On machine nisse.sfbay in the directory /u/peter run:

/u/martin/ws/int/control/build/solaris-sparc/bin/javac -J-server -J-XX:+PrintCompilation -J-Xbatch -Xbootclasspath:deps -d classes -classpath src src/HelloWorld.java src/Stylepad.java src/Wonderland.java
  1% !b   sun.nio.cs.US_ASCII$Decoder::decodeArrayLoop @ 129 (297 bytes)
  1   b   com.sun.tools.javac.parser.Scanner::scanCommentChar (58 bytes)
  2   b   com.sun.tools.javac.util.Convert::chars2utf (159 bytes)
  2%  b   com.sun.tools.javac.util.Position$LineMapImpl::build @ 25 (128 bytes)
  3  !b   sun.nio.cs.US_ASCII$Decoder::decodeArrayLoop (297 bytes)
  4  !b   com.sun.tools.javac.parser.Scanner::nextToken (3077 bytes)
  5   b   com.sun.tools.javac.parser.Scanner::scanIdent (753 bytes)
  6   b   com.sun.tools.javac.util.Name::equals (44 bytes)
  7   b   com.sun.tools.javac.util.Position$LineMapImpl::build (128 bytes)
  8   b   java.lang.String::hashCode (60 bytes)
  9   b   java.io.UnixFileSystem::normalize (75 bytes)
 10   b   com.sun.tools.javac.jvm.ClassReader::classSigToType (377 bytes)
 11   b   com.sun.tools.javac.code.Scope::<init> (37 bytes)
  3% !b   sun.nio.cs.US_ASCII$Decoder::decodeArrayLoop @ 129 (297 bytes)
 12   b   com.sun.tools.javac.parser.Scanner::scanChar (37 bytes)
src/Notepad.java:1: unclosed comment
/*
^
  4% !b   com.sun.tools.javac.util.Log::findLine @ 157 (342 bytes)
src/Notepad.java:863: reached end of file while parsing
 13  !b   com.sun.tools.javac.util.Log::findLine (342 bytes)
 14  !b   sun.nio.cs.US_ASCII$Decoder::decodeArrayLoop (297 bytes)
src/Stylepad.java:58: cannot access Notepad
bad class file: src/Notepad.java
file does not contain class Notepad
Please remove or make sure it appears in the correct subdirectory of the classpath.
public class Stylepad extends Notepad {
                              ^
3 errors

If I don't use -Xbatch, the javac run will not fail every time.
Here is the output from a successful run:

/u/martin/ws/int/control/build/solaris-sparc/bin/javac -J-server -J-XX:+PrintCompilation -Xbootclasspath:deps -d classes -classpath src src/HelloWorld.java src/Stylepad.java src/Wonderland.java
  1% !    sun.nio.cs.US_ASCII$Decoder::decodeArrayLoop @ 129 (297 bytes)
  1   COMPILE SKIPPED: concurrent class loading
  1       com.sun.tools.javac.parser.Scanner::scanCommentChar (58 bytes)
  2       com.sun.tools.javac.util.Convert::chars2utf (159 bytes)
  2%      com.sun.tools.javac.util.Position$LineMapImpl::build @ 25 (128 bytes)
  3  !    com.sun.tools.javac.parser.Scanner::nextToken (3077 bytes)
  4       com.sun.tools.javac.parser.Scanner::scanIdent (753 bytes)
  5       com.sun.tools.javac.util.Name::equals (44 bytes)
  6       java.lang.String::hashCode (60 bytes)
  7       java.io.UnixFileSystem::normalize (75 bytes)
  8       com.sun.tools.javac.jvm.ClassReader::classSigToType (377 bytes)
  9       com.sun.tools.javac.code.Scope::<init> (37 bytes)
 10  !    sun.nio.cs.US_ASCII$Decoder::decodeArrayLoop (297 bytes)
 11       com.sun.tools.javac.util.Position$LineMapImpl::build (128 bytes)
 12       com.sun.tools.javac.jvm.ClassReader::classSigToType (377 bytes)
 13       com.sun.tools.javac.jvm.ClassReader::nextChar (46 bytes)
 14       com.sun.tools.javac.jvm.ClassReader::indexPool (223 bytes)
 15       com.sun.tools.javac.util.List::prepend (10 bytes)
 16       com.sun.tools.javac.util.Name::fromChars (219 bytes)
 17       com.sun.tools.javac.util.ListBuffer::append (56 bytes)
 18  !    com.sun.tools.javac.jvm.ClassReader::list (345 bytes)
 18   COMPILE SKIPPED: concurrent class loading
 19       com.sun.tools.javac.tree.TreeInfo::hasConstructors (34 bytes)
 20       com.sun.tools.javac.util.Name::fromUtf (202 bytes)
 21       com.sun.tools.javac.code.Type$MethodType::map (71 bytes)
 22  !    com.sun.tools.javac.jvm.ClassReader::list (345 bytes)
 23       com.sun.tools.javac.jvm.ClassReader::sigToType (827 bytes)
 24       com.sun.tools.javac.jvm.ClassFile::internalize (51 bytes)
 25       com.sun.tools.javac.code.Scope::dble (137 bytes)
 26       com.sun.tools.javac.comp.Resolve::findMemberType (277 bytes)
 27*      java.lang.System::arraycopy (0 bytes)
 28       com.sun.tools.javac.jvm.ClassReader::readMethod (128 bytes)
 29       com.sun.tools.javac.code.Types$SupertypeFcn::visitClassType (132 bytes)
 30       com.sun.tools.javac.jvm.ClassReader::readPool (452 bytes)
 31       com.sun.tools.javac.code.Scope::lookup (43 bytes)
 32       com.sun.tools.javac.code.Types$AsSuperFcn::visitClassType (139 bytes)
 33       java.util.HashMap::get (74 bytes)
 34       com.sun.tools.javac.code.Symbol$MethodSymbol::overrides (231 bytes)
 35       com.sun.tools.javac.comp.Resolve::findField (294 bytes)
 36       com.sun.tools.javac.code.Symbol$MethodSymbol::implementation (149 bytes)
 37       com.sun.tools.javac.code.Types$InterfacesFcn::visitClassType (132 bytes)
 38       com.sun.tools.javac.jvm.ClassReader::readClass (484 bytes)
 39       com.sun.tools.javac.comp.Check::checkImplementations (242 bytes)
 40       com.sun.tools.javac.jvm.ClassReader::readMemberAttrs (44 bytes)
 41       com.sun.tools.javac.comp.Resolve::rawInstantiate (440 bytes)
 42       com.sun.tools.javac.util.Name::lastIndexOf (39 bytes)
 43       com.sun.tools.javac.comp.Attr::checkMethod (942 bytes)
 44       com.sun.tools.javac.comp.TransTypes::addBridgeIfNeeded (532 bytes)
 45       com.sun.tools.javac.code.Symbol$MethodSymbol::binaryImplementation (93 bytes)
 46       com.sun.tools.javac.code.Type::map (52 bytes)
 47  !    com.sun.tools.javac.code.Types$AsSuperFcn::asSuper (39 bytes)
 48       com.sun.tools.javac.code.Types::containsTypeEquivalent (68 bytes)
 49       com.sun.tools.javac.code.Symbol$MethodSymbol::binaryOverrides (140 bytes)
 50  !    com.sun.tools.javac.code.Types$IsSameTypeFcn::isSameType (39 bytes)
 51       com.sun.tools.javac.code.Types$SupertypeFcn::visitClassType (132 bytes)
 52       com.sun.tools.javac.code.Types$MemberTypeFcn::visitClassType (138 bytes)
 53  !    com.sun.tools.javac.code.Types$HasSameArgsFcn::visit (39 bytes)
 54       com.sun.tools.javac.code.Symbol$ClassSymbol::isSubClass (127 bytes)
 55       com.sun.tools.javac.code.Types::containsTypeEquivalent (33 bytes)
 56       com.sun.tools.javac.code.Types$3::apply (9 bytes)
 57       com.sun.tools.javac.code.Type$MethodType::accept (6 bytes)
 58  !    com.sun.tools.javac.code.Types$MemberTypeFcn::memberType (39 bytes)
 59       java.util.HashMap::put (113 bytes)
 60       java.util.HashMap::hash (36 bytes)
 61       com.sun.tools.javac.jvm.ClassWriter::writeMethods (85 bytes)
 62       com.sun.tools.javac.jvm.Items$StaticItem::<init> (27 bytes)
 63       com.sun.tools.javac.comp.Lower::translate (76 bytes)
 64       com.sun.tools.javac.util.ByteBuffer::appendByte (42 bytes)
 65       com.sun.tools.javac.jvm.ClassFile::externalize (51 bytes)
 66       com.sun.tools.javac.comp.Resolve::isAccessible (327 bytes)
 67       java.util.HashMap::clear (39 bytes)
 68       com.sun.tools.javac.jvm.Gen::genArgs (66 bytes)
 69       com.sun.tools.javac.code.Types$IsSameTypeFcn::visitMethodType (43 bytes)
 70       com.sun.tools.javac.code.Types::capture (134 bytes)
 71       com.sun.tools.javac.code.Types::isSubTypeUnchecked (131 bytes)
 72       com.sun.tools.javac.code.Types$IsSubTypeFcn::visitClassType (178 bytes)
 73       com.sun.tools.javac.code.Types$IsSubTypeFcn::visitType (411 bytes)
 74       com.sun.tools.javac.comp.Resolve::findMethod (285 bytes)
 75       com.sun.tools.javac.comp.Attr::checkId (787 bytes)
 76       com.sun.tools.javac.comp.Resolve::argumentsAcceptable (181 bytes)
 77       com.sun.tools.javac.code.Symbol::flags (5 bytes)
 78       com.sun.tools.javac.code.Symbol$ClassSymbol::members (16 bytes)
 79       com.sun.tools.javac.code.Types::returnTypeSubstitutable (39 bytes)
 80       com.sun.tools.javac.code.Types::erasure (27 bytes)
 81       com.sun.tools.javac.code.Symbol::isInheritedIn (148 bytes)
 82       com.sun.tools.javac.code.Types$HasSameArgsFcn::visitMethodType (43 bytes)
 83       com.sun.tools.javac.code.Types$IsSameTypeFcn::visitType (235 bytes)
 84       com.sun.tools.javac.code.Symbol$MethodSymbol::isOverridableIn (99 bytes)
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
 85       com.sun.tools.javac.code.Types$IsSameTypeFcn::visitClassType (372 bytes)
 86       com.sun.tools.javac.comp.TransTypes::coerce (50 bytes)
 87       com.sun.tools.javac.code.Types$SubstFcn::<init> (68 bytes)
 88       com.sun.tools.javac.comp.Resolve::mostSpecific (906 bytes)
  3%      java.util.HashMap::clear @ 17 (39 bytes)
 89       com.sun.tools.javac.jvm.Gen::visitIdent (346 bytes)

###@###.### 2005-2-25 01:45:05 GMT

                                    

Comments
SUGGESTED FIX

See PRT webrev:

http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2005/20050412141006.rasbold.c2_baseline5/workspace/webrevs/webrev-2005.04.13/index.html


###@###.### 2005-04-14 14:14:35 GMT
                                     
2005-04-14
EVALUATION

The split_if optimization is not respecting anti-dependences when it
computes a node for a control edge for a load.

Related to this problem as a trigger for this problem, but not directly responsible for the bug is that PhaseIdealLoop::get_late_ctrl() can indicate that a the computed control Node could be an IfNode, which is poor form and may cause complications downstream.  The same may be true for get_early_ctrl().
###@###.### 2005-03-16 18:24:46 GMT
                                     
2005-02-25
WORK AROUND

-J-client or if that is not available -J-Xint.

###@###.### 2005-2-25 01:47:30 GMT

I have a found a work around:

Index: j2se/src/share/classes/com/sun/tools/javac/parser/Scanner.java
=====================================================================
@@ -438,7 +438,7 @@
     /** Read next character.
      */
     private void scanChar() {
-	bp++; ch = buf[bp];
+	ch = buf[++bp];
 	if (ch == '\\') {
 	    convertUnicode();
 	}

###@###.### 2005-2-25 02:42:10 GMT
                                     
2005-02-25



Hardware and Software, Engineered to Work Together