Crash in CallNode::extract_projections
Florian Weimer
fw at deneb.enyo.de
Tue Aug 25 07:49:41 UTC 2020
I see a crash with the current tip:
Current CompileTask:
C2: 45117 7825 % 4 com.sun.crypto.provider.CounterMode::implCrypt @ 3 (88 bytes)
Stack: [0x00007fa82ccc1000,0x00007fa82cdc2000], sp=0x00007fa82cdbb660, free space=1001k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x71ea38] CallNode::extract_projections(CallProjections*, bool, bool)+0x298
V [libjvm.so+0x157f3bf] ShenandoahBarrierC2Support::find_bottom_mem(Node*, PhaseIdealLoop*)+0xbf
V [libjvm.so+0x1580b0a] ShenandoahBarrierC2Support::call_lrb_stub(Node*&, Node*&, Node*, Node*&, Node*, bool, PhaseIdealLoop*)+0x6a
V [libjvm.so+0x158ceea] ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop*)+0x1b0a
V [libjvm.so+0x14c716c] ShenandoahBarrierSetC2::optimize_loops(PhaseIdealLoop*, LoopOptsMode, VectorSet&, Node_Stack&, Node_List&) const+0x3c
V [libjvm.so+0x10e897c] PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0xebc
V [libjvm.so+0x15830fe] ShenandoahBarrierC2Support::expand(Compile*, PhaseIterGVN&)+0x1de
V [libjvm.so+0x14c704f] ShenandoahBarrierSetC2::expand_barriers(Compile*, PhaseIterGVN&) const+0xf
V [libjvm.so+0x88e0d0] Compile::Optimize()+0xef0
V [libjvm.so+0x88f0cf] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0xe0f
V [libjvm.so+0x70a2c3] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x113
V [libjvm.so+0x89b282] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x9b2
V [libjvm.so+0x89bc68] CompileBroker::compiler_thread_loop()+0x4a8
V [libjvm.so+0x16e57cf] JavaThread::thread_main_inner()+0x1bf
V [libjvm.so+0x16e9f66] Thread::call_run()+0xf6
V [libjvm.so+0x1317cc6] thread_native_entry(Thread*)+0x116
The replay log ends with:
ciMethod com/sun/crypto/provider/CounterMode increment ([B)V 1024 0 769188 0 0
ciMethod com/sun/crypto/provider/CounterMode implCrypt ([BII[BI)I 112 121970 1980 0 -1
ciMethod com/sun/crypto/provider/SymmetricCipher encryptBlock ([BI[BI)V 0 0 1 0 -1
ciMethod com/sun/crypto/provider/AESCrypt encryptBlock ([BI[BI)V 914 0 771254 0 0
ciMethod com/sun/crypto/provider/AESCrypt implEncryptBlock ([BI[BI)V 366 4744 322781 0 -1
compile com/sun/crypto/provider/CounterMode implCrypt ([BII[BI)I 3 4 inline 3 0 -1 com/sun/crypto/provider/CounterMode implCrypt ([BII[BI)I 1 35 com/sun/crypto/provider/AESCrypt encryptBlock ([BI[BI)V 1 42 com/sun/crypto/provider/CounterMode increment ([B)V
Poking around the core file, the crash happens because
pn->unique_ctrl_out() is zero:
// For Control (fallthrough) and I_O (catch_all_index) we have CatchProj -> Catch -> Proj
projs->fallthrough_proj = pn;
const Node *cn = pn->unique_ctrl_out();
if (cn->is_Catch()) {
ProjNode *cpn = NULL;
pn has been optimized out, but I see this:
(gdb) print *i._last
$2 = {_vptr.Node = 0x7fa8306a9ae0 <vtable for ProjNode+16>,
_in = 0x7fa7e8a502b8, _out = 0x7fa7e8a502e0,
_cnt = 1, _max = 1, _outcnt = 3, _outmax = 4, _idx = 302,
_parse_idx = 302, _class_id = 8, _flags = 64,
static NO_HASH = 0, static NotAMachineReg = 4294901760,
_debug_idx = -2145720496, _debug_orig = 0x0,
_hash_lock = 1, _last_del = 0x7fa7e8a50f88, _del_tick = 4}
More information about the shenandoah-dev
mailing list