Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Critical
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 3.0
-
Component/s: None
-
Labels:None
-
Number of attachments :
Description
Reproduce by running SPECjbb2005 with FullAdaptiveMarkSweep.
This crash can be solved by removing the annotation adding from BigDecimal.valueOf methods in AnnotationAdder.java. However I suspect this is just because SPECjbb2005 uses this method as the method is logically pure: there may be a more widespread issue with Pure methods here.
This has been a reliable failure since r13674 (September 07).
This bug relates to object constants being unmoving with the mark sweep garbage collector. I suspect when we generate their address as an IntConstant we're getting it wrong via Magic.objectAsAddress. The code dies in:
137 EG ia32_call EAX(Ljava/math/BigDecimal
AF CF OF PF ZF ESP = <[EBX(Lorg/jikesrvm/objectmodel/TIB;)]+92>DW (<TRUEGUARD>),
where I believe the loaded TIB from the literal has become junk. The error can be reproduced with:
rvm -gdb -X:aos:enable_recompilation=false -Xms400m -Xmx600m -classpath jbb.jar:check.jar org.jikesrvm.tools.oth.OptTestHarness -oc:O2 -oc:print_all_ir=true -methodBase java.math.BigDecimal valueOf - -methodOpt spec.jbb.Order processLines - -main spec.jbb.JBBmain -propfile SPECjbb.props