review for 6996747: SIGSEGV in nmethod::cleanup_inline_caches / CompiledIC::verify

Tom Rodriguez tom.rodriguez at
Thu May 12 14:31:02 PDT 2011
149 lines changed: 149 ins; 0 del; 0 mod; 10537 unchg

6996747: SIGSEGV in nmethod::cleanup_inline_caches / CompiledIC::verify

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