On 26/03/2019 3:34 pm, Chris Plummer wrote:
On 3/25/19 10:11 PM, David Holmes wrote:
On 26/03/2019 3:05 pm, Chris Plummer wrote:
printStackTrace shouldn't ever result in an OOME since the memory
held that caused the previous OOME should be released before another
OOME is generated (no longer any references to it).
It will depend on the code executed leading up to and after the OOME
that will determine if memory has been released by the time the OOME
reaches the top-level.
Well, my assumption is that there is no class static holding on to the
memory. If there isn't and printStackTrace needs to allocate an object,
then a gc will be done if necessary. If there is static, I'd call that a
test bug. A test shouldn't fill the heap, generate and catch an OOME,
and then expect the test to be able to exit gracefully unless it first
releases the memory.
I think that was Leonid's point too. It's not obvious from
resexhausted004.java that that is the case.
That aside the change to resexhausted004.java seems unnecessary. These
tests report success or failure by calling System.exit() with an
appropriate return code. By catching the exceptions the VM will appear
to exit with a zero code, which should still be seen as a failure in
this case. If the exceptions are left to propagate out you'll get a
non-zero return code which should still be a failure, and the stacktrace
printing will be handled in the normal way if main returns via throwing
an exception.
David
Chris
David
Chris
On 3/25/19 9:56 PM, Leonid Mesnik wrote:
Gary
Just want to add that following code
68 } catch (OutOfMemoryError me) {
69 me.printStackTrace();
70 }
might throw another OOME in printStackTrace().
If you want to do something after OOME it is needed to free some
before trying to allocate.
Leonid
On Mar 25, 2019, at 12:46 PM, Chris Plummer
<chris.plum...@oracle.com <mailto:chris.plum...@oracle.com>> wrote:
Hi Gary,
In resexhausted004.java, the indentation needs to be fixed. Also,
what happens if one of the caught exceptions is thrown? Does the
test fail or pass? I'm not sure what the default behavior is if you
just return from main().
Otherwise looks good.
thanks,
Chris
On 3/25/19 11:18 AM, Gary Adams wrote:
During testing I found that there is still good reasons to leave
003 and 004
tests on the ProblemList. I believe there is still work to be done
to ensure
JDK-7013634 and JDK-6606767 are covered.
This pass attempts to solve the primary issue in this bug which is
improper paths on the
test command lines. Cleanup is limited to the 003 and 004 tests.
The tests will
remain on the ProblemList.
Issue: https://bugs.openjdk.java.net/browse/JDK-8218128
Webrev:
http://cr.openjdk.java.net/~gadams/8218128/webrev.01/index.html
On 3/8/19, 3:39 PM, Chris Plummer wrote:
Ok, I didn't realize the @ignore was removed also. I guess this
is what "exclude" was converted into. So the question now is
should the @ignore (and the exclude comment) remain. The @ignore
bug (JDK-7013634) was closed as CNR. I'm actually the one that
closed it a while back, and that may have been a mistake since I
didn't realize that some of the tests had been completely
excluded from testing, even quarantine testing. After reading
through some of the comments in JDK-7013634, I'm not trusting
these tests to run reliably. That's often the case with tests
that try to exhaust resources.
Chris
On 3/8/19 9:41 AM, Gary Adams wrote:
On 3/8/19, 12:10 PM, Chris Plummer wrote:
You can remove the quarantine and exclude keywords. I think
that's appropriate if the test is off the problemlist and
working. It was just nonconcurrent removal that I was against.
Done
As for the resexhausted001 failure you are still seeing, how
could jtreg exclude it if it was not on the problemlist. I
didn't think there was any other mechanism. I don't believe
jtreg looks at the tonga keywords.
I believe the @ignore is a jtreg keyword.
With the -ignore command line flag jtreg can be directed to
quietly ignore a test, or force an error, or attempt to run the
test
even though the @ignore directive is there.
thanks,
Chris
On 3/8/19 5:07 AM, Gary Adams wrote:
I'll revert the comments that were left in during the tonga
conversion.
I did come across an interesting test failure in resexhausted001
which had an
@ignore 7013634
JDK-7013634: jvmti resexhausted001 can timeout or fail due
to excessive thread creation
The test was closed because it was not reproducible.
Even though the test was not on the ProblemList, I believe
jtreg was excluding the test from running.
The original problem reported an "out of swap" condition.
The current failure reports:
----------System.out:(3/217)----------
Creating threads...
Timeout refired 480 times
[730.871s][warning][os,thread] Failed to start thread -
_beginthreadex failed (EACCES) for attributes: stacksize:
default, flags: CREATE_SUSPENDED STACK_SIZE_PARAM_IS.
On 3/7/19, 4:02 PM, Chris Plummer wrote:
Hi Gary,
Why did you remove the "nonconcurrent" keyword. I know these
are just comments for reference that were added when the test
was ported from tonga, but as a comment it is still
applicable. The test should not be run concurrent with others
(which you have also fixed with the addition of the
"exclusiveAccess.dirs=.").
Otherwise changes look good.
thanks,
Chris
On 3/7/19 10:57 AM, Gary Adams wrote:
This proposed fix will restore the ResourceExhausted tests.
Test 3 and 4 were on the ProblemList because of the potential
path issues in finding the correct classes. This change
searches the
test.class.path for the appropriate vmTestbase classes
rather than using
incorrect settings on the command line.
Some clean up has been done to remove quarantine keyword
and @ignore directives. Should additional clean up be done
to remove
bug numbers, etc.?
TEST.PROPERTIES were added so test 3 so it is consistent
with the other tests
in the group.
Issue: https://bugs.openjdk.java.net/browse/JDK-8218128
Webrev:
http://cr.openjdk.java.net/~gadams/8218128/webrev.00/index.html
Local testing has been successful on a linux-x64-debug build.
Testing on mach5 for other platforms next.