EllanJiang/GameFramework · critical · GameFrameworkException
Parse package version list exception
Error message
Parse package version list exception '{0}'. What it means
Wraps any non-GameFrameworkException thrown while parsing/deserializing the package version list into a GameFrameworkException with the original exception message appended. It preserves the inner exception as InnerException. Any unexpected parsing error (corrupt stream, out-of-range reads, format bugs) surfaces this way in OnLoadPackageVersionListSuccess's catch block.
Solutions
- Inspect the InnerException of this GameFrameworkException to find the real parse failure.
- Rebuild and redeploy the version list to eliminate corruption/truncation.
- Confirm the downloaded/loaded bytes are the version list binary (log bytes.Length and first bytes) and that the URL/path is correct.
- Pin GameFramework and resource-builder versions so the binary layout matches the serializer.
Example fix
// before
catch (GameFrameworkException ex) { Log.Error(ex.Message); } // inner cause lost
// after
catch (GameFrameworkException ex) { Log.Error("{0} | inner: {1}", ex.Message, ex.InnerException); } Defensive patterns
Strategy: try-catch
Try / catch
try { resourceComponent.InitResources(); }
catch (GameFrameworkException ex) when (ex.InnerException != null)
{ Log.Error("Parse failed: {0} caused by {1}", ex.Message, ex.InnerException); } Prevention
- Always inspect InnerException for the real parse cause.
- Verify downloaded bytes are binary, not an error page.
- Pin framework and resource-builder versions together.
When it happens
Trigger: PackageVersionListSerializer.Deserialize throws (e.g. end-of-stream while reading, bad binary layout) or the post-deserialization processing code throws any non-GameFrameworkException inside the try block.
Common situations: Version list file truncated during copy to the device; version list built with mismatched binary layout/endianness or different framework version; LoadBytes returned bytes of an HTML error page instead of the binary list when loading a remote URL.
Understand the failure class
Background: "failed to unmarshal" / json.Unmarshal errors: why parsing a response into a Go struct fails and how to fix it — this error's family across 23 libraries.
Related errors
- Deserialize updatable version list failure.
- Deserialize read-only version list failure.
- Deserialize read-write version list failure.
- Deserialize package version list failure.
- Parse updatable version list exception
AI-assisted analysis of EllanJiang/GameFramework@d0c010b051 (2026-09-15).
Data as JSON: /api/errors/4878ec439e484fc5.
Report an issue: GitHub.
Appendix: source
Thrown at GameFramework/Resource/ResourceManager.ResourceIniter.cs:162
if (resource.Variant != null && resource.Variant != m_CurrentVariant)
{
continue;
}
group.AddResource(new ResourceName(resource.Name, resource.Variant, resource.Extension), resource.Length, resource.Length);
}
}
ResourceInitComplete();
}
catch (Exception exception)
{
if (exception is GameFrameworkException)
{
throw;
}
throw new GameFrameworkException(Utility.Text.Format("Parse package version list exception '{0}'.", exception), exception);
}
finally
{
m_CachedFileSystemNames.Clear();
if (memoryStream != null)
{
memoryStream.Dispose();
memoryStream = null;
}
}
}
private void OnLoadPackageVersionListFailure(string fileUri, string errorMessage, object userData)
{
throw new GameFrameworkException(Utility.Text.Format("Package version list '{0}' is invalid, error message is '{1}'.", fileUri, string.IsNullOrEmpty(errorMessage) ? "<Empty>" : errorMessage));
}
}
}View on GitHub (pinned to d0c010b051)