diff --git a/jabsorb-1.2.5.jar b/jabsorb-1.2.5.jar index 66ff965..339d999 100644 Binary files a/jabsorb-1.2.5.jar and b/jabsorb-1.2.5.jar differ diff --git a/json.jar b/json.jar index 6360462..67fe770 100644 Binary files a/json.jar and b/json.jar differ diff --git a/src/org/jabsorb/serializer/MarshallingModeContext.java b/src/org/jabsorb/serializer/MarshallingModeContext.java index 02740de..4e6e725 100644 --- a/src/org/jabsorb/serializer/MarshallingModeContext.java +++ b/src/org/jabsorb/serializer/MarshallingModeContext.java @@ -1,8 +1,7 @@ package org.jabsorb.serializer; -import java.util.Deque; -import java.util.Stack; import java.util.ArrayDeque; +import java.util.Deque; /** * Context that holds the marshalling mode for a given thread. @@ -16,6 +15,10 @@ public class MarshallingModeContext { protected Deque initialValue() { return new ArrayDeque<>(); } + @Override + protected Deque childValue(Deque parentValue) { + return new ArrayDeque<>(parentValue); + } }; /** diff --git a/webapps/jsonrpc/CHANGES.txt b/webapps/jsonrpc/CHANGES.txt index 959cbbe..71432ad 100644 --- a/webapps/jsonrpc/CHANGES.txt +++ b/webapps/jsonrpc/CHANGES.txt @@ -1,5 +1,14 @@ CHANGES log +2026-06-15 jabsorb 1.2.5 fix + +* Fix InheritableThreadLocal race in MarshallingModeContext +* Override childValue() to return a defensive copy of the parent's ArrayDeque +* instead of sharing the same mutable reference. On JDK21, aggressive parallel +* thread creation during UVM startup caused concurrent push/pop corruption on +* the shared stack, silently failing SettingsManager.save() and leaving settings +* files (admin.js, system.js) missing from disk. + 2025-08-05 jabsorb 1.2.5 release * Support for Two Marshalling Modes