Looks good. I might move the static class preloading into a static method of the reaper thread class, to make it clearly the responsibility of the reaper thread class to enumerate and pre-load its dependencies.
On Wed, Jul 22, 2020 at 7:59 AM Peter Levart <peter.lev...@gmail.com> wrote: > > Hi Roger, > > > I don't think resolving the ConcurrentHashMap.class ensures > initialization of the class. Just loading. But I think CHM is already > initialized at that time as it is used in ClassLoader to maintain class > loading locks (per class name). > > > Regards, Peter > > > On 7/22/20 4:51 PM, Roger Riggs wrote: > > Please review a change to the Process reaper thread initialization to > > preemptively > > make sure classes ThreadLocalRandom and ConcurrentHashMap are > > initialized. > > From the stack overflow failures, it seems that the classes have not > > been initialized > > before they are used during processing the termination of a process. > > When the initialization is performed on the smaller reaper stack, it > > occasionally > > exceeds the available stack. > > > > As an aid to diagnostics, > > -XX:AbortVMOnException=java.lang.StackOverflowError > > is added to TestHumongousNonArrayAllocation that has failed > > intermittently. > > If the problem happens again it will produce an hs_error file with > > useful details > > and will otherwise not change the test behavior. > > > > Webrev: > > http://cr.openjdk.java.net/~rriggs/webrev-stackoverflow-8249217/ > > > > Issue: > > https://bugs.openjdk.java.net/browse/JDK-8249217 > > > > Thanks, Roger > >