On Wed, 17 Sep 2025 03:03:56 GMT, Chris Plummer <[email protected]> wrote:
> This test has been silently throwing ObjectCollectedException probably but > still passing. I believe it has always done this. The exception went > unnoticed because it is caught and then setSuccess(false) is never called. It > was finally noticed when this test failed due to a timeout (which seems to be > a separate issue), and the ObjectCollectedException was noted in the log. > > This PR fixes the setSuccess(false) call in a few places, including in one > other test that didn't seem to be otherwise be failing. > > The cause of the ObjectCollectedException is a test bug. The test is testing > the following: > > // can't force collection of thread group because of 1 reference is always > // left in parent tread group > > So it forces a GC and expects the ObjectReference it has for a ThreadGroup to > still be alive. However, the above comment is incorrect. The ThreadGroup spec > says: > > "A thread group is weakly reachable from its parent group so that it is > eligible for garbage collection when there are no live threads in the group > and the thread group is otherwise unreachable. " > > So this ThreadGroup is being collected, resulting in the > ObjectCollectedException in the following code: > > for (ObjectReference objectReference : objectReferences) > objectReference.referringObjects(0); > > This part of the test is invalid and has been removed. I also slightly > updated the rest of the test by forcing a gc earlier so we can verify that > the ThreadGroup is collected. Seems quite reasonable. Thanks ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/27327#pullrequestreview-3232592556
