Hello Chris,

In the past the OCA verification has sometimes taken more than a week or two, so please wait a few more days for the verification to be completed.

-Jaikiran

On 23/07/25 4:30 am, Chris Dennis wrote:
Is there a process I can (or should?) be following to get my PR for fixing this through OCA verification, or do I just need to be a little more patient?

Thanks,

Chris

On Tue, 15 Jul 2025 at 07:59, Chris Dennis <chris.w.den...@gmail.com> wrote:

    Apologies, that description is pretty lousy. A more explicit
    description of the leak (the one in my test in
    https://github.com/openjdk/jdk/pull/26296) would be: A class
    loaded by classloader 'C' statically references an Executor
    created via newSingleThreadExecutor(threadFactory). The
    ThreadFactory is an instance of a class also loaded by 'C'. This
    executor is then shutdown via shutdownNow(). The resulting
    structure will pin the classloader 'C' in memory.

    Chris

    On Tue, 15 Jul 2025 at 06:50, Alan Bateman
    <alan.bate...@oracle.com> wrote:

        On 11/07/2025 15:42, Chris Dennis wrote:
        > Hi All,
        >
        > I believe I've identified a bug in
        > Executors.AutoShutdownDelegatedExecutorService that can
        trigger a
        > classloader leak even in the presence of "correct" Executor
        > lifecycling. AutoShutdownDelegatedExecutorService only
        unlinks the
        > PhantomReference used for cleanup handling when it is
        shutdown via the
        > shutdown() method. If an Executor wrapped in this way is
        instead
        > shutdown using the shutdownNow() method and it references a
        > classloader via an injected attribute: ThreadFactory,
        AbortPolicy,
        > etc. then the cleanup action will reference the classloader,
        and the
        > classloader will remain strongly referenced. Adding an
        additional
        > override as shown in the attached patch is sufficient to fix
        the leak
        > in my testing.
        >
        It would be useful if you could say more about the scenario.
        The cleaner
        should execute once the executor service is eligible to be
        GC'ed and the
        reference is queued. Invoking shutdown just means it is early
        unregistered. So I'm wondering if your issue is more about
        timing in
        that it's not being GC'ed in a timely manner.

        -Alan

Reply via email to