RFR(XS): 8008188: Add regression test for 8005875
Leonid Mesnik
leonid.mesnik at oracle.com
Thu Feb 14 13:15:33 UTC 2013
On 02/14/2013 04:47 PM, Bengt Rutisson wrote:
>
> Leonid,
>
> On 2/14/13 1:27 PM, Leonid Mesnik wrote:
>> John
>>
>> This test should start failing in non-G1 baseline. Even
>> "IgnoreUnrecognizedVMOptions" is added I think it should fail because
>> of incompatible GC combinations.
>
> Actually it won't fail. The test checks that the output "G1 Parallel
> Marking Threads" is *not* present, which it won't be for any other
> collectors.
>
> It is kind of a waste to run this test for other collectors but it
> won't fail. However, since the testing framework is limited and can't
> handle that we need to write tests for specific GCs I think this is
> how we have to write our tests.
Shouldn't fail here: (./share/vm/runtime/arguments.cpp)
// Check consistency of GC selection
bool Arguments::check_gc_consistency() {
check_gclog_consistency();
bool status = true;
// Ensure that the user has not selected conflicting sets
// of collectors. [Note: this check is merely a user convenience;
// collectors over-ride each other so that only a non-conflicting
// set is selected; however what the user gets is not what they
// may have expected from the combination they asked for. It's
// better to reduce user confusion by not allowing them to
// select conflicting combinations.
uint i = 0;
if (UseSerialGC) i++;
if (UseConcMarkSweepGC || UseParNewGC) i++;
if (UseParallelGC || UseParallelOldGC) i++;
if (UseG1GC) i++;
if (i > 1) {
jio_fprintf(defaultStream::error_stream(),
"Conflicting collector combinations in option list; "
"please refer to the release notes for the combinations "
"allowed\n");
status = false;
}
return status;
}
>
>> Also I think that investigation parent process from child is not safe
>> and make analysis harder if something going wrong.
>>
>> Also there was a bug 15947151 - JDK6 JMAP -HEAP LOCKS post 6u29.
>> Here are comments from Kevin:
>>
>> /@ Using Runtime.exec to launch a child process which then attaches
>> back to the/
>> /@ parent to run diagnostics just sounds risky. Diagnostics may need
>> to suspend/
>> /@ the parent JVM. The child needs the parent to read buffers such
>> that the /
>> /@ child may write. Buffering usually lets this succeed, but there
>> could/
>> /@ be some risk./
>>
>>
>> So I would prefer to avoid such schemes if we don't want to test them.
>
> Yes, this is an interesting problem. If the buffer for the
> OutputAnalyzer gets full before the jmap call returns we will have a
> deadlock.
>
> Would you suggest that the test should spawn two processes?
Yes
> How do they do the handshaking to find out when it is safe to do a
> jmap call from one to the other?
We use DTonga for similar tmtools tests which includes task
synchronization. Also we have network-based sync for jdi/other debugging
tests.
May be jps could be used to find process and be sure that java is
initialized or just make jmap in a loop until it returns results.
Unfortunately there is no easy and generic synchronization I think.
Think comments below are for John.
Leonid
> Looking at this test again reminded me of a few more minor things:
>
> * It would be good if the test had the "@key gc" tag that I am just
> about to add. See:
> http://cr.openjdk.java.net/~brutisso/8006398/webrev.01/
>
> * You don't need -XX:+IgnoreUnrecognizedVMOptions in the @run command
>
> * The test is in a directory called 8005875/. I again think this is
> obsolete if we use the @bug tag. I would prefer to name the folder
> something meaningful.
>
> Thanks,
> Bengt
>
>>
>> Leonid
>>
>> On 02/14/2013 04:51 AM, John Cuthbertson wrote:
>>> Hi Everyone,
>>>
>>> Can I have a couple of volunteers review the regression test for
>>> 8005875 - the webrev can be found at:
>>> http://cr.openjdk.java.net/~johnc/8008188/webrev.0/
>>>
>>> The test is very simple and issues "jcmd <pid> Thread.print" against
>>> itself. With G1 and PGCT=0, and before the fix for 8005875, this
>>> command crashes the VM.
>>>
>>> Testing:
>>> jdk8 build (b76) with fix for 8005875; jdk8 build (b71) without fix
>>> for 8005875; Changed the test options to run the test with the
>>> invalid flag -XX:+UseG2GC.
>>>
>>> Thanks,
>>>
>>> JohnC
>>
>>
>> --
>> Leonid Mesnik
>> JVM SQE
>
--
Leonid Mesnik
JVM SQE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20130214/9f837846/attachment.htm>
More information about the hotspot-gc-dev
mailing list