RFR (XXS): 7006810: G1: Introduce peace-of-mind checking in the Suspendible Thread Set
joe provino
joseph.provino at oracle.com
Thu Apr 9 13:53:54 UTC 2015
On 04/09/2015 04:48 AM, Per Liden wrote:
> Hi Joe,
>
> On 2015-04-09 01:29, Joseph Provino wrote:
>>
>> On 4/7/2015 4:33 AM, Per Liden wrote:
>>> Hi Joe,
>>>
>>> suspendibleThreadSet.cpp:
>>>
>>> 78 void SuspendibleThreadSet::synchronize() {
>>> 79 assert(Thread::current()->has_joined_suspendible_thread_set(),
>>> 80 "Must have joined");
>>> ...
>>> 93 void SuspendibleThreadSet::desynchronize() {
>>> 94 assert(Thread::current()->has_joined_suspendible_thread_set(),
>>> 95 "Must have joined");
>>>
>>> This does not look right to me. The VM thread is the only one calling
>>> synchronize/desynchronize, and that should not be part of the sts.
>>> Note that you need to enable G1 to test this code path. Did you run
>>> this through jprt?
>> Hi Per, I did run it through jprt and it passes. Do you think there's
>> still a problem that needs to be addressed?
>
> That jprt run you linked to was not done with the patch you initially
> sent out for review.
Right. I made the changes to the names of the variables and methods and
fixed the conditionals.
> Anyway, those asserts are not correct. The VM thread is never part of
> the STS. I can easily provoke a crash with java -XX:+UseG1GC -version.
>
> There's also a bug here, _suspendible_thread is never properly
> initialized in Thread's constructor and I suspect this might be the
> reason why it sometimes works by accident.
ah, okay, thanks!
joe
>
> /Per
More information about the hotspot-gc-dev
mailing list