JDK-8184995 : assert(out == prev || prev == __null) failed: no branches off of store slice
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 10
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2017-07-20
  • Updated: 2019-09-13
  • Resolved: 2017-10-11
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 10
10Resolved
Related Reports
Duplicate :  
Relates :  
Relates :  
Sub Tasks
JDK-8185013 :  
Description
The following tests failed in the 2017-07-19 JDK10-hs nightly:

bigapps/Kitchensink/modulePostprocess
bigapps/Kitchensink/stability
bigapps/Kitchensink/stressExitCode
    Tests failed the following assertion:

    #  Internal Error (hotspot/src/share/vm/opto/superword.cpp:1073), pid=27507, tid=27562
    #  assert(out == prev || prev == __null) failed: no branches off of store slice

    Here is a snippet of the stack trace:

    V  [libjvm.so+0x973b80]  report_vm_error(char const*, int, char const*, char const*, ...)+0x60;;  report_vm_error(char const*, int, char const*, char const*, ...)+0x60
    V  [libjvm.so+0x13a4853]  SuperWord::mem_slice_preds(Node*, Node*, GrowableArray<Node*>&)+0x173;;  SuperWord::mem_slice_preds(Node*, Node*, GrowableArray<Node*>&)+0x173
    V  [libjvm.so+0x13a6353]  SuperWord::dependence_graph()+0xa13;;  SuperWord::dependence_graph()+0xa13
    V  [libjvm.so+0x13ad66c]  SuperWord::SLP_extract()+0x5c;;  SuperWord::SLP_extract()+0x5c
    V  [libjvm.so+0x13ade8b]  SuperWord::transform_loop(IdealLoopTree*, bool)+0x2cb;;  SuperWord::transform_loop(IdealLoopTree*, bool)+0x2cb
    V  [libjvm.so+0xfa6dde]  PhaseIdealLoop::build_and_optimize(bool, bool)+0x132e;;  PhaseIdealLoop::build_and_optimize(bool, bool)+0x132e
    V  [libjvm.so+0x8f0785]  PhaseIdealLoop::PhaseIdealLoop(PhaseIterGVN&, bool, bool)+0x1f5;;  PhaseIdealLoop::PhaseIdealLoop(PhaseIterGVN&, bool, bool)+0x1f5
    V  [libjvm.so+0x8edf00]  Compile::Optimize()+0xd40;;  Compile::Optimize()+0xd40
    V  [libjvm.so+0x8ef32a]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x106a;;  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x106a
    V  [libjvm.so+0x72bc4e]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x37e;;  C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x37e
    V  [libjvm.so+0x8fb7ad]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x5ad;;  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x5ad
    V  [libjvm.so+0x8fc90f]  CompileBroker::compiler_thread_loop()+0x31f;;  CompileBroker::compiler_thread_loop()+0x31f
    V  [libjvm.so+0x140e128]  compiler_thread_entry(JavaThread*, Thread*)+0x28;;  compiler_thread_entry(JavaThread*, Thread*)+0x28


These failures occurred on Linux 32-bit Server VM and on
ARM 64-bit Server VM.

Comments
I've verified with my prototype fix that this is a duplicate of JDK-8189067. UseSubwordForMaxVector is not the cause and disabling it only hides the problem. I will re-enable UseSubwordForMaxVector with my fix for JDK-8189067.
11-10-2017

I agree with Igor's latest ILW. Changing priority.
18-08-2017

ILW = Crash in superword analysis, only with -XX:+UseSubwordForMaxVector which is disabled by default since JDK-8185013,none= HLH = P2
17-08-2017

Working on it.
24-07-2017

Looks like 2017-07-20 JDK10-hs nightly testing was running sources before I pushed fix for 8185013.
21-07-2017

SPECjvm2008.jar from link[1] is not correct. It is better download it from http://spec.org/download.html And Intel should have its copy too I think.
21-07-2017

ILW = Crash in superword analysis, only with -XX:+UseSubwordForMaxVector which is disabled by default since JDK-8185013, -XX:-UseSubwordForMaxVector = HLL = P4
21-07-2017

Hi Vivek, this failure seems to be caused by JDK-8175096. Please have a look. Thanks, Tobias
21-07-2017

Hi Vladimir, sure, done. Steps to reproduce: 1) Get SPECjvm2008.jar (for example, from [1]) 2) Download attached replay_pid27507.log [2] 3) Build 32-bit fastdebug JDK 10 for Linux, I used a build from 2017-07-20 with the following tips [3] 4) Run java -XX:+ReplayCompiles -XX:+ReplayIgnoreInitErrors -XX:ReplayDataFile=replay_pid27507.log -cp SPECjvm2008.jar [...] Resolving klass java/util/LinkedHashMap$Entry at 37 Resolving klass java/util/HashMap$Node at 51 Resolving klass java/lang/Object at 101 Resolving klass java/lang/String at 205 Resolving klass java/lang/System at 207 # To suppress the following error report, specify this argument # after -XX: or in .hotspotrc: SuppressErrorAt=/superword.cpp:1073 # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (/scratch/opt/jprt/T/P1/192117.iklam/s/hotspot/src/share/vm/opto/superword.cpp:1073), pid=17268, tid=17285 # assert(out == prev || prev == __null) failed: no branches off of store slice I reproduced this on Oracle Linux 7.0 on an Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz machine. I verified that the crash goes away with -XX:-UseSubwordForMaxVector. I'll remove the integration blocker label because subword vector analysis was disabled by JDK-8185013. [1] https://github.com/connorimes/SPECjvm2008/raw/master/SPECjvm2008.jar [2] https://bugs.openjdk.java.net/secure/attachment/71424/replay_pid27507.log [3] .:035a3a7c0ea7 jdk:739b540ab924 jaxp:f0aabb2fef5b corba:25d991a67cba jaxws:bddeaa49ffd5 closed:57756101b7b1 hotspot:954c4844232f nashorn:fed3f3298757 langtools:813863b6154b jdk/src/closed:bc3045d968eb jdk/make/closed:481a9ca93647 jdk/test/closed:78997938b069 hotspot/src/closed:1ea494eb47dd hotspot/make/closed:237c63373ad7 hotspot/test/closed:e1c5f9568d7b
21-07-2017

We should built reproducer from replay file I attached and let Intel investigate this. I will file separate bug to disable optimization. hs_err and replay files are from failure on 32-bit linux-x86.
20-07-2017

Tobias, please, build reproducer based on replay if possible and hand the bug to Intel to look.
20-07-2017

Could be caused by JDK-8175096. We can switch that optimization off by setting UseSubwordForMaxVector to false. And see if the problem still there.
20-07-2017