{"record":{"id":"47489491c5b1f5f8","repo":"dotnet/wpf","slug":"stream-transformation-failed-due-to-uninitialized-data","errorCode":null,"errorMessage":"Stream transformation failed due to uninitialized data transform objects.","messagePattern":"Stream transformation failed due to uninitialized data transform objects\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/WindowsBase/System/IO/Packaging/CompoundFile/DataSpaceManager.cs","lineNumber":1541,"sourceCode":"                                                        transformLayer.transformEnvironment );\n            }\n            Debug.Assert( null != transformLayer.transformReference,\n                \"Failed to have a transform instance going in\" );\n            IDataTransform transformObject = transformLayer.transformReference;\n\n            // If transform is not ready, call initializers to make it ready.\n            if( ! transformObject.IsReady )\n            {\n                CallTransformInitializers(\n                    new TransformInitializationEventArgs(\n                        transformObject,\n                        dataSpaceLabel,\n                        containerReference.FullName,\n                        transformLabel)\n                    );\n\n                if( ! transformObject.IsReady ) // If STILL not ready, nobody could make it \"ready\".\n                    throw new InvalidOperationException(\n                        SR.TransformObjectInitFailed);\n            }\n            // Everything is setup, get a transformed stream\n            outputStream = transformObject.GetTransformedStream( outputStream, transformContext );\n        }\n\n        outputStream = new BufferedStream( outputStream ); // Add buffering layer\n\n        outputStream = new StreamWithDictionary( outputStream, transformContext );\n\n        _transformedStreams.Add( outputStream ); // Remember this for later use\n\n        return outputStream;\n    }\n\n    /// <summary>\n    /// When naming a transform object, the string being passed in can be\n    /// interpreted in one of several ways.  This enumerated type is used","sourceCodeStart":1523,"sourceCodeEnd":1559,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/IO/Packaging/CompoundFile/DataSpaceManager.cs#L1523-L1559","documentation":"This InvalidOperationException is thrown when a data space's transform object never reaches the IsReady state before GetTransformedStream is called, meaning no registered transform could initialize itself (e.g. its required definition/extra data was absent or unrecognized). The stream cannot be transformed, so data-space-based access fails.","triggerScenarios":"Opening a package with a transform stack (e.g. an encryption/RightsManagement transform) whose transform object lacks the information needed to initialize; raised in DataSpaceManager.GetTransformedStream when transformObject.IsReady is still false after all initialization attempts.","commonSituations":"Packages with encryption or information-rights-management transforms opened without the required RM environment/credentials, transform definitions whose extra data was stripped by repackaging tools, or a missing transform implementation.","solutions":["Ensure the required transform environment is available (e.g. initialize rights management and acquire credentials before opening the package).","Re-save the package without encryption/RM transforms if protected access is not needed.","Verify the package's TransformDefinitions streams are complete and unmodified.","Catch InvalidOperationException around package/transform access and check the transform's readiness/diagnostics before retrying."],"exampleFix":"// before\nPackage pkg = Package.Open(protectedPath);\n// after\nif (EnvironmentsAreReady()) // e.g. rights management initialized\n{\n    Package pkg = Package.Open(protectedPath);\n}\nelse\n{\n    Console.WriteLine(\"Cannot open protected package: transform environment is not initialized.\");\n}","handlingStrategy":"try-catch","validationCode":"// Ensure the transform environment is initialized before opening protected packages:\nif (!transformEnvironmentReady) InitializeTransformEnvironment(); // e.g. rights management activation/credential acquisition","typeGuard":"bool CanOpenProtectedPackage(bool environmentReady, bool credentialsAcquired) => environmentReady && credentialsAcquired;","tryCatchPattern":"try { package = Package.Open(path); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"transform\")) { log.Warn(ex, \"Transform object failed to initialize\"); Console.Error.WriteLine(\"Cannot open protected package: required transform environment is unavailable.\"); }","preventionTips":["Initialize rights management / encryption support before opening protected packages.","Only remove transforms from packages via APIs, never by editing metadata.","Distribute unencrypted packages where RM support cannot be guaranteed."],"tags":["transform","initialization","packaging"],"backgroundTag":"module-init-failed","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-21T21:30:21.729Z"}