Skip to content

Troubleshooting ​

Every fallible call returns a status value instead of throwing where it can. This page lists each one, what it means and what to do.

WgsOpenStatus ​

Returned by WgsStore.TryOpen in WgsOpenResult.Status.

StatusMeaningWhat to do
OpenedThe store opened. Store is set.Continue.
NotAContainerFolderThe folder does not contain containers.index.Check the path. Use WgsStore.ResolveContainerFolder to map a parent or GUID sub-folder to the store folder.
UnsupportedLayoutcontainers.index exists but is not in the layout this package understands.Do not write to it. Run wgs diagnose if it opens, and report the store (sanitized) as an issue. See Supported titles.
LockConflictAnother process holds the index open, or access was denied.Close the game and the Xbox app, wait a few seconds, and retry. Check folder permissions.
FailedAny other IO or permission error. Message has the detail.Read the message, check the path exists and the drive is available.

WgsOperationStatus ​

Returned by TryReadBlob (in WgsReadResult) and by TryWriteBlob and TryAddOrReplaceContainer (in WgsCommitResult).

StatusReadWriteMeaning and what to do
OkyesyesIt worked. On a read, check UsedFallback: true means the blob came from the previous id or a folder scan, so Xbox has not finished syncing that save.
RefusednoyesThe write gate said no, or a write would misstate a blob (an untouched blob of a multi-blob container is missing or mid-sync), or the container is a deletion tombstone. Read Assessment.Concerns and Message. For unresolved-conflict, launch the game online and let it resolve the conflict. For unsafe-state, the container has an undefined state or is Deleted without an ETag: run RepairRecoveredManifests. For process-running, close the named process (and the Xbox app). For process-check-failed, the process list could not be read: fix that or run as a user who can read it. For a custom concern (for example "game running"), fix that.
LockConflictyesyesA file was held by another process (sharing violation or access denied). Close the game and the Xbox app, then retry. Nothing was written.
ConcurrentChangenoyesThe index changed on disk after you opened the store, so the game or a sync client touched it. Nothing was written. Re-open the store, re-read, re-apply your edit, and retry.
UnsupportedLayoutyesyesA manifest or index shape this package does not model, for instance a truncated manifest or one whose blob count its length cannot hold. (A container that simply holds several blobs is supported: read it with TryReadBlobs; TryReadBlob also reports it here, with a message pointing at TryReadBlobs.) The library refuses rather than guess. Report a sanitized fixture.
MissingBlobyesnoThe blob a manifest names is missing and no safe alternative exists. Xbox may not have finished downloading it. Close the game, wait for sync, and try again.
SyncInFlightyesnoTwo different blobs are on disk: a sync is part-way through and nothing says which should win. Close the game and Xbox app, let sync finish, then open again. Do not write.
FailedyesyesAnother IO error. Message has the detail. Nothing is guaranteed about a partial write: restore from your CopyStoreTo backup if the store looks wrong.

Reading wgs diagnose ​

wgs diagnose (and WgsStore.Diagnose()) reports:

SectionMeaningFix
invalid stateState outside the format, or a state that contradicts the ETagRepairRecoveredManifests(), or a write corrects contradictions
unsafe to build onUndefined state, or Deleted without an ETagRepair the state. (A deletion tombstone with its ETag, which wgs delete leaves, is normal and is listed as pending deletion, not here.)
need repairAn unresolved-conflict marker, undefined states, or manifests whose blob is missing but recoverableRepairRecoveredManifests() (explicit; never runs on a read)
multi-blobThe container's manifest names more than one blob. Informational: supportedwgs blobs, TryReadBlobs, WriteNamedBlob. put and WriteBlob refuse these rather than drop blobs
malformed manifestA container.N exists but cannot be parsed (truncated, a blob count its length does not support, a repeated blob name)Damage. Restore that container from a backup (wgs restore); do not write
orphaned foldersSave data no index entry points atOrphanedContainers() then ReRegisterOrphan

Common questions ​

My edit vanished after the game started. The service may have settled a conflict in the cloud's favour, or the game overwrote the store. Compare snapshots taken before and after with wgs compare: it flags DROPPED, ROLLED BACK, CHANGED and RESOLVED containers.

wgs put says nothing was written. The message names the status. The backup is kept either way, so nothing is lost.

Reading works but writing is refused. Reading only needs a coherent manifest. Writing also needs a clear write gate; see wgs diagnose for the concerns.

Exit code 1 from wgs diagnose. Writes are blocked. See the concerns it prints.

Deleting, restoring, importing ​

wgs delete left the container listed as Deleted. The cloud knows that container, so the entry stays as a tombstone with its ETag until the deletion syncs. Launch the game online and let it sync. A container that was never uploaded is removed outright.

wgs restore says the backup is not a valid store. It names each problem (a missing blob, an unreadable manifest, a size the index does not match). Nothing was changed and no safety copy was made. Use a backup taken with wgs backup on a healthy store.

A restore or import was interrupted. The index is replaced last, so an interruption leaves the previous index and data described. wgs restore also keeps a safety copy of the store as it was; an import stops at the first failure with earlier containers fully written and later ones untouched.

wgs import refuses a file. With an export manifest, every file's size and SHA-256 must match and no path may leave the folder. Re-export, or fix the file.

Released under the Apache-2.0 license. Not affiliated with Microsoft.