JDK-4799512 : CTW assertion at loopnode.hpp, 432
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 1.4.2
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: linux,solaris_8,solaris_9
  • CPU: sparc,itanium
  • Submitted: 2003-01-07
  • Updated: 2003-03-03
  • Resolved: 2003-02-14
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
1.4.2 b17Fixed
Related Reports
Duplicate :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Description
Following assertion occurred when running Compile The World tests in Linux-ia64 and sparcv9 platforms.

I used machine osmium to reproduce this bug.

#########################
# To reproduce the bug:
#########################
1. cd /net/jano.sfbay/export/disk20/GammaBase/Bugs/[bug ID]
2. edit script if needed.
3. run one of the shell scripts: 
 

Error : Running /net/vmsqe.sfbay/export/nightly/CompileTheWorld/result/compiler2/linux-ia64/comp/baseline/1.4.2-beta-b10-debug/Failed/run.ant-1.2.jar.1.ksh
*****Debug Info: java -version(-Xinternalversion)*****
VM option 'MinInliningThreshold=0'
VM option 'MaxPermSize=64m'
java version "1.4.2-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-beta-b11)
Java HotSpot(TM) 64-Bit Server VM (build 1.4.2-beta-b11-debug, mixed mode)
java full version "1.4.2-beta-b11"
VM option 'MinInliningThreshold=0'
VM option 'MaxPermSize=64m'
Built on Dec 19 2002 19:31:46 by unknown with unknown compiler
*****Debug Info: Machine Used*****
Linux osmium.SFBay.Sun.COM 2.4.9-34smp #1 SMP Sat Jun 1 05:55:47 EDT 2002 ia64 unknown
*****Debug Info: Command Line As Follow*****
/net/vmsqe.sfbay/export/weekly/mantis/JDK/latest/linux-ia64/bin/java_g   -XX:MinInliningThreshold=0 -XX:MaxPermSize=64m -Xss4m -verify -XX:-ShowMessageBoxOnError -XX:+CompileTheWorld -XX:CompileTheWorldStartAt=1 -Xbootclasspath/p:/net/vmsqe.sfbay/export/backup/testbase/CompileTheWorld/jarfiles/ant-1.2.jar
*****Compile The World Start AT Mon Jan  6 21:40:51 PST 2003*****
VM option 'MinInliningThreshold=0'
VM option 'MaxPermSize=64m'
VM option '-ShowMessageBoxOnError'
VM option '+CompileTheWorld'
VM option 'CompileTheWorldStartAt=1'
CompileTheWorld : Compiling all classes in /net/vmsqe.sfbay.sun.com/export/backup/testbase/CompileTheWorld/jarfiles/ant-1.2.jar

CompileTheWorld (1) : org/apache/tools/ant/AntClassLoader
CompileTheWorld (2) : org/apache/tools/ant/BuildEvent
CompileTheWorld (3) : org/apache/tools/ant/BuildException
CompileTheWorld (4) : org/apache/tools/ant/BuildListener
CompileTheWorld (5) : org/apache/tools/ant/BuildLogger
CompileTheWorld (6) : org/apache/tools/ant/DefaultLogger
CompileTheWorld (7) : org/apache/tools/ant/DesirableFilter
CompileTheWorld (8) : org/apache/tools/ant/DirectoryScanner
CompileTheWorld (9) : org/apache/tools/ant/FileScanner
CompileTheWorld (10) : org/apache/tools/ant/IntrospectionHelper$1
CompileTheWorld (11) : org/apache/tools/ant/IntrospectionHelper$10
CompileTheWorld (12) : org/apache/tools/ant/IntrospectionHelper$11
CompileTheWorld (13) : org/apache/tools/ant/IntrospectionHelper$12
CompileTheWorld (14) : org/apache/tools/ant/IntrospectionHelper$13
CompileTheWorld (15) : org/apache/tools/ant/IntrospectionHelper$14
CompileTheWorld (16) : org/apache/tools/ant/IntrospectionHelper$15
CompileTheWorld (17) : org/apache/tools/ant/IntrospectionHelper$16
CompileTheWorld (18) : org/apache/tools/ant/IntrospectionHelper$2
CompileTheWorld (19) : org/apache/tools/ant/IntrospectionHelper$3
CompileTheWorld (20) : org/apache/tools/ant/IntrospectionHelper$4
CompileTheWorld (21) : org/apache/tools/ant/IntrospectionHelper$5
CompileTheWorld (22) : org/apache/tools/ant/IntrospectionHelper$6
CompileTheWorld (23) : org/apache/tools/ant/IntrospectionHelper$7
CompileTheWorld (24) : org/apache/tools/ant/IntrospectionHelper$8
CompileTheWorld (25) : org/apache/tools/ant/IntrospectionHelper$9
CompileTheWorld (26) : org/apache/tools/ant/IntrospectionHelper$AttributeSetter
CompileTheWorld (27) : org/apache/tools/ant/IntrospectionHelper$NestedCreator
CompileTheWorld (28) : org/apache/tools/ant/IntrospectionHelper
CompileTheWorld (29) : org/apache/tools/ant/Location
CompileTheWorld (30) : org/apache/tools/ant/Main
CompileTheWorld (31) : org/apache/tools/ant/Map
CompileTheWorld (32) : org/apache/tools/ant/PathTokenizer
CompileTheWorld (33) : org/apache/tools/ant/Project
CompileTheWorld (34) : org/apache/tools/ant/ProjectHelper$AbstractHandler
CompileTheWorld (35) : org/apache/tools/ant/ProjectHelper$DataTypeHandler
CompileTheWorld (36) : org/apache/tools/ant/ProjectHelper$NestedElementHandler
CompileTheWorld (37) : org/apache/tools/ant/ProjectHelper$ProjectHandler
CompileTheWorld (38) : org/apache/tools/ant/ProjectHelper$RootHandler
CompileTheWorld (39) : org/apache/tools/ant/ProjectHelper$TargetHandler
CompileTheWorld (40) : org/apache/tools/ant/ProjectHelper$TaskHandler
CompileTheWorld (41) : org/apache/tools/ant/ProjectHelper
CompileTheWorld (42) : org/apache/tools/ant/RuntimeConfigurable
CompileTheWorld (43) : org/apache/tools/ant/Target
CompileTheWorld (44) : org/apache/tools/ant/Task
CompileTheWorld (45) : org/apache/tools/ant/TaskAdapter
CompileTheWorld (46) : org/apache/tools/ant/taskdefs/Ant
CompileTheWorld (47) : org/apache/tools/ant/taskdefs/AntStructure
CompileTheWorld (48) : org/apache/tools/ant/taskdefs/Available
CompileTheWorld (49) : org/apache/tools/ant/taskdefs/CallTarget
CompileTheWorld (50) : org/apache/tools/ant/taskdefs/Chmod
CompileTheWorld (51) : org/apache/tools/ant/taskdefs/CompileTask
CompileTheWorld (52) : org/apache/tools/ant/taskdefs/Copy
CompileTheWorld (53) : org/apache/tools/ant/taskdefs/Copydir
CompileTheWorld (54) : org/apache/tools/ant/taskdefs/Copyfile
CompileTheWorld (55) : org/apache/tools/ant/taskdefs/Cvs
CompileTheWorld (56) : org/apache/tools/ant/taskdefs/Delete
CompileTheWorld (57) : org/apache/tools/ant/taskdefs/Deltree
CompileTheWorld (58) : org/apache/tools/ant/taskdefs/Echo
CompileTheWorld (59) : org/apache/tools/ant/taskdefs/Exec$StreamPumper
CompileTheWorld (60) : org/apache/tools/ant/taskdefs/Exec
CompileTheWorld (61) : org/apache/tools/ant/taskdefs/ExecTask
CompileTheWorld (62) : org/apache/tools/ant/taskdefs/Execute$CommandLauncher
CompileTheWorld (63) : org/apache/tools/ant/taskdefs/Execute$CommandLauncherProxy
CompileTheWorld (64) : org/apache/tools/ant/taskdefs/Execute$Java11CommandLauncher
CompileTheWorld (65) : org/apache/tools/ant/taskdefs/Execute$Java13CommandLauncher
CompileTheWorld (66) : org/apache/tools/ant/taskdefs/Execute$MacCommandLauncher
CompileTheWorld (67) : org/apache/tools/ant/taskdefs/Execute$ScriptCommandLauncher
CompileTheWorld (68) : org/apache/tools/ant/taskdefs/Execute$WinNTCommandLauncher
CompileTheWorld (69) : org/apache/tools/ant/taskdefs/Execute
CompileTheWorld (70) : org/apache/tools/ant/taskdefs/ExecuteJava
CompileTheWorld (71) : org/apache/tools/ant/taskdefs/ExecuteOn$FileDirBoth
CompileTheWorld (72) : org/apache/tools/ant/taskdefs/ExecuteOn
CompileTheWorld (73) : org/apache/tools/ant/taskdefs/ExecuteStreamHandler
CompileTheWorld (74) : org/apache/tools/ant/taskdefs/ExecuteWatchdog
CompileTheWorld (75) : org/apache/tools/ant/taskdefs/Exit
CompileTheWorld (76) : org/apache/tools/ant/taskdefs/Expand
CompileTheWorld (77) : org/apache/tools/ant/taskdefs/Filter
CompileTheWorld (78) : org/apache/tools/ant/taskdefs/FixCRLF$AddAsisRemove
CompileTheWorld (79) : org/apache/tools/ant/taskdefs/FixCRLF
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/loopnode.hpp:432
#
# HotSpot Virtual Machine Error, assertion failure
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (1.4.2-beta-b11-debug mixed mode)
#
# assert(n != __null, "Bad immediate dominator info.")
#
# Error ID: /BUILD_AREA/jdk1.4.2/hotspot/src/share/vm/opto/loopnode.hpp, 432
#
# Problematic Thread: prio=1 tid=0x60000000000b5c38 nid=0x575f runnable 
#

Heap at VM Abort:
Heap
 def new generation   total 1984K, used 208K [0x2000000045420000, 0x2000000045640000, 0x2000000046970000)
  eden space 1792K,  11% used [0x2000000045420000, 0x20000000454542f0, 0x20000000455e0000)
  from space 192K,   0% used [0x20000000455e0000, 0x20000000455e0000, 0x2000000045610000)
  to   space 192K,   0% used [0x2000000045610000, 0x2000000045610000, 0x2000000045640000)
 tenured generation   total 1408K, used 0K [0x2000000046970000, 0x2000000046ad0000, 0x2000000049420000)
   the space 1408K,   0% used [0x2000000046970000, 0x2000000046970000, 0x2000000046970200, 0x2000000046ad0000)
 compacting perm gen  total 16384K, used 2400K [0x2000000049420000, 0x200000004a420000, 0x200000004d420000)
   the space 16384K,  14% used [0x2000000049420000, 0x2000000049678240, 0x2000000049678400, 0x200000004a420000)
Current thread is 0x2009
Dumping core ...
Exit Value 0
*****Compile The World End AT Mon Jan  6 21:44:17 PST 2003*****
[dhana@osmium Failed]$ 

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: mantis-beta FIXED IN: mantis-beta INTEGRATED IN: mantis-b17 mantis-beta tiger VERIFIED IN: mantis-beta
14-06-2004

SUGGESTED FIX For mantis, we will prohibit the split-if optimization if a block has a ConvI2LNode. The better long term solution for both this bug and 4781451 is to allow PhiNodes with TOP inputs. ###@###.### 2003-02-06 ------- loopopts.cpp ------- 606a607,629 > #ifdef _LP64 > static bool merge_point_safe(Node* region) { > // 4799512: Stop split_if_with_blocks from splitting a block with a ConvI2LNode > // having a PhiNode input. This sidesteps the dangerous case where the split > // ConvI2LNode may become TOP if the input Value() does not > // overlap the ConvI2L range, leaving a node which may not dominate its > // uses. > // A better fix for this problem can be found in the BugTraq entry, but > // expediency for Mantis demands this hack. > for (DUIterator_Fast imax, i = region->fast_outs(imax); i < imax; i++) { > Node* n = region->fast_out(i); > if (n->is_Phi()) { > for (DUIterator_Fast jmax, j = n->fast_outs(jmax); j < jmax; j++) { > Node* m = n->fast_out(j); > if (m->Opcode() == Op_ConvI2L) { > return false; > } > } > } > } > return true; > } > #endif 607a631 > 676a701,707 > #ifdef _LP64 > // Check for safety of the merge point. > if( !merge_point_safe(n_ctrl) ) { > return; > } > #endif > ###@###.### 2003-02-07
07-02-2003

EVALUATION This occurs with sparcv9 as well, with a slight change to the inlining flags, and does not appear to be a ia64-specific bug. I have included the file "doit.sparcv9" which fails with the b12 and b13 build. ###@###.### 2003-01-14 Loop optimization is causing a node to be scheduled to a block that does not dominate the blocks of its use. Root cause still yet to be determined. ###@###.### 2003-01-17 A ConvI2LNode added (see bug 4699924) in -d64 mode only is being split by the split-if optimization. This node is decorated with a 1::<large number> range, but C2 observes that its input is the constant 0, and therefore, the value is never used. The bug is that the corresponding PhiNode is eliminated because it only has one non-TOP input. The remaining ConvI2LNode no longer dominates its uses which, in general, causes problems. In this case, build_loop_late() asserts. Bug 4781451 is another example of this bug. In that case, we fixed a specific instance of the problem without addressing the more general cause we have identified here. ###@###.### 2003-01-27 Not applicable to 1.4.1, so 1.4.1_03 removed from the list. ###@###.### 2003-02-10
27-01-2003