RFR(XS): 8143897 :Weblogic12medrec assert(handler_address == SharedRuntime::compute_compiled_exc_handler(nm, pc, exception, force_unwind, true)) failed: Must be the same

Christian Thalinger christian.thalinger at oracle.com
Thu Jan 28 18:45:37 UTC 2016


   if (count() < cache_size) {
     set_pc_at(count(),addr);
     set_handler_at(count(), handler);

Shouldn’t we read count() only once into a local variable to rule any odd race bugs down the road?

> On Jan 28, 2016, at 5:16 PM, Jamsheed C m <jamsheed.c.m at oracle.com> wrote:
> 
> Hi,
> 
> Please review the fix made for issue
> 
> bug url: https://bugs.openjdk.java.net/browse/JDK-8143897
> web rev: http://cr.openjdk.java.net/~thartmann/8143897/webrev.00/
> 
> Unit tests: As its hard, none
> 
> Other tests: jprt.
> 
> Description of the issue:
> A valid pc match in exception cache returning an invalid handler makes assert to fail.
> This happens as  ExceptionCache reads are lock free access.
> 
> As a fix for this i have put a storestore mem barrier before the count is updated.
> 
> Best Regards,
> Jamsheed



More information about the hotspot-compiler-dev mailing list