review for 6996747: SIGSEGV in nmethod::cleanup_inline_caches / CompiledIC::verify
Igor Veresov
igor.veresov at oracle.com
Thu May 12 15:17:26 PDT 2011
307 NMethodMarker() {
308 _thread->set_scanned_nmethod(NULL);
309 }
^^ did you mean this to be a destructor?
Otherwise looks good.
igor
On 5/12/11 2:31 PM, Tom Rodriguez wrote:
> http://cr.openjdk.java.net/~never/6996747
> 149 lines changed: 149 ins; 0 del; 0 mod; 10537 unchg
>
> 6996747: SIGSEGV in nmethod::cleanup_inline_caches / CompiledIC::verify
> Reviewed-by:
>
> When the sweeper is processing an nmethod it's possible for a
> safepoint to occur while acquiring locks to clean the inline caches.
> This can allow the nmethod to be unloaded in the middle of processing
> it which can result in assertion failures or crashes. I considered
> modifying the locks to skip the safepoint check but it would require
> changing CompiledIC_lock, InlineCacheBuffer_lock and VtableStubs_lock
> which seems risky. Instead I keep track of the currently nmethod in
> the CompiledThread and scan it when a GC occurs. I also included some
> sweeper logging code that I wrote while debugging this. Tested with
> failing test from report though we'll need big apps runs to confirm
> that there aren't other issues.
>
More information about the hotspot-compiler-dev
mailing list