[Fwd: Request for reviews (M): 6973963: SEGV in ciBlock::start_bci() with EA]

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Aug 2 15:01:02 PDT 2010


Forwarding to GC and Runtime groups since it is common code.

Vladimir

-------- Original Message --------
Subject: Request for reviews (M): 6973963: SEGV in ciBlock::start_bci() with EA
Date: Mon, 02 Aug 2010 14:57:25 -0700
From: Vladimir Kozlov <vladimir.kozlov at oracle.com>
To: hotspot compiler <hotspot-compiler-dev at openjdk.java.net>

http://cr.openjdk.java.net/~kvn/6973963/webrev

Fixed 6973963: SEGV in ciBlock::start_bci() with EA

I added stress recompilation during CompileTheWorld and found this case.
It is similar to 6968368. BCEscapeAnalyzer::do_analysis() calls
ciMethod::get_method_blocks() which calls constructor ciMethodBlocks.
This constructor allocates GrowableArray elements on stack (thread
local resource area). As result when the method recompiled without EA
_blocks->_data is NULL.

Solution:
Added stress recompilation during CompileTheWorld: recompile with
subsume_loads = false and do_escape_analysis = false.
Added more checks into ResourceObj and growableArray to verify correctness
of allocation. I have to relax the new assert in GrowableArray when
elements are allocated on arena to allow allocattion of GrowableArray object
as a part of an other object (for example, in ConnectionGraph and SuperWord).

Tested with failed cases, CTW.


More information about the hotspot-gc-dev mailing list