JDK-6579506 : assert(!o->is_null_object(),"null object not yet handled here.") on CTW runs
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2007-07-11
  • Updated: 2011-03-08
  • Resolved: 2011-03-08
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.
JDK 6 JDK 7 Other
6u10Fixed 7Fixed hs11Fixed
Related Reports
Relates :  
Description
Assertion fires on many CTW runs, during a compile of <clinit>.

For example, try:

java -server -Xss4m -verify -XX:-ShowMessageBoxOnError -XX:+CompileTheWorld -XX:CompileTheWorldStartAt=1 -XX:+PrintCompilation -Xbootclasspath/p:/net/vmsqe.sfbay/export/backup/testbase/CompileTheWorld/jarfiles/Clock.jar

Comments
SUGGESTED FIX See PRT webrev: http://prt-web.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/2007/20070713065002.rasbold.c2_baseline0/workspace/webrevs/webrev-2007.07.13/index.html
16-07-2007

EVALUATION New, G1 motivated, code in do_put_xxx() attempts to find the type of a store to a static final field based on the type of value being stored. In the failing case, make_from_constant() is called with a ciNullObject, which causes an assert. The fix is to remove the special case lookup in do_put_xxx. The code is only exercised when compiling class initializers, which probably only occurs with -Xcomp and CTW. Furthermore, the computed type is currently unused in C2 since we don't generate any pre-write barriers.
12-07-2007

EVALUATION Assertion happens when do_put_xxx calls make_from_constant() when a constant field is being assigned a null value. Make_from_constant does not handle ciObjects that represent a null object. Furthermore, the assertion only triggers when compiling a class initializer, as that is the only method where a constant field can be assigned to.
12-07-2007