JDK-4641526 : CTW: "Base pointers must match"
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 1.4.1
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_8
  • CPU: sparc
  • Submitted: 2002-02-22
  • Updated: 2002-04-19
  • Resolved: 2002-04-12
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.1 hopperFixed
Related Reports
Duplicate :  
Relates :  
Description
When I run CTW on weblogic jar file , I hit this assertion on solsparc 
platform.

# Java VM: Java HotSpot(TM) Server VM (optimized+1.4.1+c2_baseline+compiler2+20020219-125807-debug mixed mode)
#
# assert(!addp || addp->in(AddPNode::Base)->is_top() || addp->in(AddPNode::Base) == n->in(AddPNode::Base), "Base pointers must match")
#
# Error ID: /net/jano/export/disk05/hotspot/auto/ws_jano/fpt/src/share/vm/opto/compile.cpp, 1781 [ Patched ]
#
# Problematic Thread: prio=5 tid=0x1843e0 nid=0x9 runnable 

Here is jar file location:
/net/sqesvr/export/vsn/VM/testbase/testbase_vm/src/jit/compiletheworld/jars/u-z/weblogicbig.jar

Here is command line to reproduce the bug:

/net/jdk.sfbay/export/disk6/promoted/jdk/1.4/latest/binaries/solsparc/bin/java -XXaltjvm=/net/taloraan/export/vsn/VM/merlin/nightly/binary/c2_baseline/solspa
rc_compiler2_fastdebug_latest -verify -XX:+CompileTheWorld -XX:MinInliningThreshold=0 -XX:MaxPermSize=64m -XX:+VerifyDUIterators -XX:CompileTheWorldStartAt=1
1140 -XX:CompileTheWorldStopAt=11142 -Xbootclasspath/p:/net/sqesvr/export/vsn/VM/testbase/testbase_vm/src/jit/compiletheworld/jars/u-z/weblogicbig.jar

To reproduce the bug:
1. cd /net/jano.sfbay/export/disk20/GammaBase/Bugs/[bugID]
2. edit doit.ksh if needed
3. run doit.ksh script

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

EVALUATION Dies with -XX:+CompileTheWorld -Xbootclasspath/p:/net/sqesvr/export/vsn/VM/testbase/testbase_vm/src/ jit/compiletheworld/jars/u-z/weblogicbig.jar -XX:CompileTheWorldStartAt=11141 -XX:+PrintOpto -XX:CIStart=8 It's a false-positive thrown by the assert, caused by fairly clever loop optimization. The loop opt changes the following code shape: loop: x = getstatic if P goto exit_loop inc ctr if ctr < end goto loop y = ld [x+40] goto merge exit_loop: y = ld [x+ctr<<2+12] merge: ... use y The problem here is that 'x' is a loop-invariant read repeated in the loop. The loop optimizer clones private copies for each use and allows the uses to sink out of the loop. It has to prevent these seperate uses from common-ing up again and the hack to do that is a tad clever: the cloned-out loads are yanked from the worklist. One of the exit paths has several uses of x and so gets several clones which do not common. The repeated AddP's in "x+ctr<<2+12" each get their own instance of a load x which looks are seperate bases. A better answer (than yanking from the worklist) is probably to put a control edge on the cloned loads (to prevent them from combining back into the loop but allow extras on the same path to fold up). ###@###.### 2002-03-07
07-03-2002