Impact: Crash, the test case is very simple.
Likelihood: This reproduces all the time.
Justification: This affects any code that does a bitwise AND with a integer loaded from memory and constant mask value with conversion to a long. The JVM crashes because the code created for this sequence of operations was specified to have a fix size, which is incorrect in this case because the operation of loading of an unknown constant to a register is variable sized and depends on the actual constant. If not caught early like it is in the debug version, this could lead to problems in computing correct branch offsets and, as a result, to arbitrary behavior.
Risk: Zero, the change causes the JVM to calculate the size of the emitted instructions rather then using the precomputed size.
This change has already been committed to JDK 9 repo but should be pushed to JDK 8 as well.
Looks like this issue is reproducible with latest S11.1 SRU15 that embeds JDK 7. Copying email discussion on that topic here:
On 13/02/2014 21:07, Igor Veresov wrote:
> Hi Serge,
> Yes, it could very well be that issue.
> On Feb 13, 2014, at 7:49 AM, Serge Dussud wrote:
>> Hi Igor,
>> I see that you've worked on the below JDK bug:
>> and I am wondering if I am hitting same issue with jdk 7. The context is that I am testing OpsCenter softwarevand Solaris 11.1 SRU15, and I am hitting issue because of the below java crash (see also attachment for more java data on the issue).
>> Does that shed some light ? any comment or advice would be much appreciated,
>> TIA !
>> -------- Original Message --------
>> Subject: Re: s11.1SRU15 weirdness ? Re: LDOM T4-1 S11 API - Nightly Run on sm4170m2-52-n172: FAIL
>> Date: Thu, 13 Feb 2014 16:27:52 +0100
>> An update on this: re-running the job went a bit better but jobs now fail in Verify Agent Install task, failing to configure agent. Looks like a jvm crash. Any comments/ideas anyone ?
>> executing step : sc_console
>> verified sc_console command is OK
>> Configuring sc_console
>> checking existing sc_console connections
>> doing sc-console registration
>> # A fatal error has been detected by the Java Runtime Environment:
>> # Internal Error (output.cpp:1576), pid=3601, tid=15
>> # guarantee((int)(blk_starts[i+1] - blk_starts[i]) >= (current_offset - blk_offset)) failed: shouldn't increase block size
>> # JRE version: Java(TM) SE Runtime Environment (7.0_51-b13) (build 1.7.0_51-b13)
>> # Java VM: Java HotSpot(TM) Server VM (24.51-b03 mixed mode solaris-sparc )
>> # Core dump written. Default location: /opt/SUNWxvmoc/private/steps/core or core.3601
>> # An error report file with more information is saved as:
>> # /opt/SUNWxvmoc/private/steps/hs_err_pid3601.log
>> # If you would like to submit a bug report, please visit:
>> # http://bugreport.sun.com/bugreport/crash.jsp
>> Agent Configuration failed:1
>> /usr/sfw/bin/wget -O /tmp/S99agent_ret_status.run -t 5 -T 5 http://10.166.172.134:8004/scnospstat/?phase=agent&client_id=10.166.174.158\&job_id=sm4170m2-52-n172.165&status=configerror&conn_id=found.
>> /bin/rm -rf /var/tmp/OpsCenterAgent