EllanJiang/GameFramework · error · GameFrameworkException
Deserialize read-write version list failure.
Error message
Deserialize read-write version list failure.
What it means
Thrown when the read-write version list bytes cannot be deserialized or the resulting LocalVersionList has IsValid == false. The framework treats a corrupt sandbox version list as fatal for the update/check flow.
Solutions
- Delete the read-write version list from the persistent data path so it is re-generated/re-downloaded
- Regenerate the list with the matching ResourceBuilder/serializer
- Ensure ReadWriteVersionListSerializer matches the serialization format actually used
- Check disk space and write integrity in the sandbox area
Example fix
// before: stale corrupt list used blindly checker.CheckResources(); // after: clear sandbox list when format version changed if (storedFormatVersion != currentFormatVersion) File.Delete(rwVersionListPath); checker.CheckResources();
Defensive patterns
Strategy: validation
Validate before calling
var fi = new FileInfo(rwVersionListPath); if (!fi.Exists || fi.Length == 0 || fi.Length < minimumExpectedSize) File.Delete(rwVersionListPath); // force rebuild
Try / catch
try { checker.CheckResources(); }
catch (GameFrameworkException ex) when (ex.Message.Contains("Deserialize read-write version list failure")) { DeleteSandboxVersionList(); RestartCheck(); } Prevention
- Delete the sandbox version list when the serialization format version changes
- Use the serializer matching the build pipeline
- Verify writes completed fully before restarting the app
- Check storage health/free space on device
When it happens
Trigger: m_ResourceManager.m_ReadWriteVersionListSerializer.Deserialize(memoryStream) returns an invalid list, or versionList.IsValid is false — bad bytes written to the read-write area or serializer mismatch.
Common situations: Interrupted previous update left a truncated read-write version list on disk; serializer type changed between app versions; file written by a different framework build; storage corruption on the device.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- Deserialize updatable version list failure.
- Deserialize read-only version list failure.
- Deserialize package version list failure.
- Parse package version list exception
- Parse updatable version list exception
AI-assisted analysis of EllanJiang/GameFramework@d0c010b051 (2026-09-15).
Data as JSON: /api/errors/f8d1d1085ea3932c.
Report an issue: GitHub.
Appendix: source
Thrown at GameFramework/Resource/ResourceManager.ResourceChecker.cs:450
m_ReadOnlyVersionListReady = true;
RefreshCheckInfoStatus();
}
private void OnLoadReadWriteVersionListSuccess(string fileUri, byte[] bytes, float duration, object userData)
{
if (m_ReadWriteVersionListReady)
{
throw new GameFrameworkException("Read-write version list has been parsed.");
}
MemoryStream memoryStream = null;
try
{
memoryStream = new MemoryStream(bytes, false);
LocalVersionList versionList = m_ResourceManager.m_ReadWriteVersionListSerializer.Deserialize(memoryStream);
if (!versionList.IsValid)
{
throw new GameFrameworkException("Deserialize read-write version list failure.");
}
LocalVersionList.Resource[] resources = versionList.GetResources();
LocalVersionList.FileSystem[] fileSystems = versionList.GetFileSystems();
foreach (LocalVersionList.FileSystem fileSystem in fileSystems)
{
int[] resourceIndexes = fileSystem.GetResourceIndexes();
foreach (int resourceIndex in resourceIndexes)
{
LocalVersionList.Resource resource = resources[resourceIndex];
SetCachedFileSystemName(new ResourceName(resource.Name, resource.Variant, resource.Extension), fileSystem.Name);
}
}
foreach (LocalVersionList.Resource resource in resources)
{
SetReadWriteInfo(new ResourceName(resource.Name, resource.Variant, resource.Extension), (LoadType)resource.LoadType, resource.Length, resource.HashCode);View on GitHub (pinned to d0c010b051)