RFR(xs): 8014022: G1: Non Java threads should lock the shared SATB queue lock without safepoint checks.
ysr1729 at gmail.com
Fri Jun 28 08:03:28 UTC 2013
Ah, OK. Thx for the clarification!
On Fri, Jun 28, 2013 at 12:58 AM, Per Liden <per.liden at oracle.com> wrote:
> There are no non-JavaThreads doing this currently (to the best of my
> knowledge), so that path should never be executed at the moment. But that
> path could be executed in the future. While doing some
> experimenting/prototyping I had introduced such a thread and that's when I
> ran into the issue.
> On 2013-06-28 09:36, Srinivas Ramakrishna wrote:
>> Per, this seems reasonable, but can you give an example of a non-Java
>> thread that executes this code and when? (not knowing enough of the
>> implementation details of G1, this might be a somewhat naive question,
>> but bear with me.)
>> -- ramki
>> On Thu, Jun 27, 2013 at 6:00 AM, Per Liden <per.liden at oracle.com> wrote:
>>> Could I please have a couple of reviews on this small fix.
>>> Summary: If a non-Java thread writes to an object field the G1
>>> can potentially safepoint when acquiring the shared pointer queue lock
>>> (Shared_SATB_Q_lock). This is problematic if e.g. the non-Java thread has
>>> joined the STS. The solution is to grab the lock without a safepoint
>>> Testing: I ran into this bug while doing some (unrelated) experiments
>>> G1, where I had a non-JavaThread do calls to oop->obj_field_put().
>>> doesn't currently have any non-JavaThread which does this, so it can't
>>> currently be provoked by a test. However, after fixing this in my
>>> experimental repo I stopped running into this issue.
>>> Webrev: http://cr.openjdk.java.net/~pliden/8014022/webrev.00/
>>> Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014022
>>> (btw, Bengt volunteered to sponsor the change)
More information about the hotspot-gc-dev