[resending; in an effort to produce a less garbled version] Remi,
> On 26 Feb 2021, at 22:06, Remi Forax > <fo...@univ-mlv.fr<mailto:fo...@univ-mlv.fr>> wrote: > >[sent to both email list given it's not clear if it's an implementation issue >or a spec issue] > >There is a nice video of how the serialization of records works recently on >inside.java >https://inside.java/2021/02/23/records-met-serialization/ Yes, this is a nice explanation of how record serialization works. > In the video, Julia explains that the de-serialization works from bottom-up, > so what if the record instances are a linked list … > answer: a stack overflow. This reproducer fails on my machine with a StackOveflowException when serializing ( not de-serializing ). It fails with: Exception in thread "main" java.lang.StackOverflowError at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1142) at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1577) at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1534) at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1443) at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1186) at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1577) at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1534) at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1443) at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1186) at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1577) at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1534) at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1443) at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1186) at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1577) ... The same is true if Link is a normal class ( not a record class ). Records and normal classes share the same code path in OOS when serializing. -Chris.