RFR: 8208752: Calling a deserialized Lambda might fail with ClassCastException [v4]

Liam Miller-Cushon cushon at openjdk.org
Thu Jan 22 16:33:08 UTC 2026


On Thu, 22 Jan 2026 11:45:08 GMT, Liam Miller-Cushon <cushon at openjdk.org> wrote:

>> See [JDK-8208752: Calling a deserialized Lambda might fail with ClassCastException](https://bugs.openjdk.org/browse/JDK-8208752).
>> 
>> Lambda deserialization currently does not consider `SerializedLambda#getInstantiatedMethodType` when deserializing lambdas, which can lead to method references that differ only in `getInstantiatedMethodType` being merged into the same lambda instance, and can result in `ClassCastException`s like the one reported in the bug.
>> 
>> This depends on the fix for [JDK-8374654: Inconsistent handling of lambda deserialization for Object method references on interfaces](https://bugs.openjdk.org/browse/JDK-8374654) in https://github.com/openjdk/jdk/pull/29075.
>
> Liam Miller-Cushon has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains nine commits:
> 
>  - Merge branch 'JDK-8374654' into JDK-8208752
>  - Test cleanup
>  - Updates for --debug=dumpLambdaDeserializationStats
>  - Merge branch 'JDK-8374654' into JDK-8208752
>  - Merge branch 'JDK-8374654' into JDK-8208752
>  - Update test
>  - Merge branch 'JDK-8374654' into JDK-8208752
>  - Don't rely on the iteration order of Map.of entries
>  - 8208752: Calling a deserialized Lambda might fail with ClassCastException

Thanks, I agree with not doing #29075 separately first to avoid a breakage. However doing this one first also doesn't work, this change by itself would regress `tools/javac/lambda/SerializableObjectMethods.java` and `tools/javac/lambda/LambdaLambdaSerialized.java`. Currently those tests rely on lambdas being incorrectly merged together, and with this fix they no longer get merged because they have different target types, but then they don't deserialize because the `getImplClass` doesn't match. Those test failures were what led me down the path of that other fix: https://bugs.openjdk.org/browse/JDK-8208752?focusedId=14636922&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-14636922

So I think maybe we should just merge both of these changes into a single fix? I will update the PR if that makes sense.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/28943#issuecomment-3785351727


More information about the compiler-dev mailing list