diff --git a/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java b/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java index ee82d88f6fa..1c7a8c6172c 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -245,6 +245,12 @@ public static int eatMemory(ExecutionController stresser, GarbageProducer gp, lo } } + private static Throwable ultimateCause(Throwable t) { + while (t.getCause() != null) { + t = t.getCause(); + } + return t; + } public static int eatMemory(ExecutionController stresser, GarbageProducer gp, long initialFactor, long minMemoryChunk, long factor, OOM_TYPE type) { try { @@ -253,6 +259,9 @@ public static int eatMemory(ExecutionController stresser, GarbageProducer gp, lo } catch (OutOfMemoryError e) { return numberOfOOMEs++; } catch (Throwable t) { + if (ultimateCause(t) instanceof OutOfMemoryError) { + return numberOfOOMEs++; + } throw new RuntimeException(t); } }