Error when spamming Ctrl + S in integrated error (UPDATE: it's on whole stride, not only editor)
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 7.8k
- Forks
- 1.2k
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 49
Description
Release Type: Official Release
Version: Version number 4.1.0
Platform(s): Editor
When spamming CTRL S in integrated editor for saving, I get error
To Reproduce
Steps to reproduce the behavior:
- edit something
- spam CTRL + S
- Get error
Expected behavior
A clear and concise description of what you expected to happen.
No error
Screenshots
If applicable, add screenshots to help explain your problem (use GitHub drag & drop)
Log and callstacks
If any, please attach here any log or callstack (preferably in a .txt file using GitHub drag and drop)
Additional context
Add any other context about the problem here.
Error if you need it
Error: The asset cannot be saved to path [F:/StrideProjects/Doors Clone/Assets/MainScene.sdscene]
InvalidCastException: Unable to cast object of type 'System.Int32' to type 'System.Guid'.
at Stride.Core.Yaml.AssetPartCollectionSerializer.FixupPaths[TIndexSource,TIndexTarget](ObjectContext& objectContext, Dictionary`2 mapping) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\AssetPartCollectionSerializer.cs:line 113
at Stride.Core.Yaml.AssetPartCollectionSerializer.CreateOrTransformObject(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\AssetPartCollectionSerializer.cs:line 57
at Stride.Core.Yaml.Serialization.Serializers.ObjectSerializer.CreateOrTransformObjectInternal(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializers\ObjectSerializer.cs:line 124
at Stride.Core.Yaml.Serialization.Serializers.ObjectSerializer.WriteYaml(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializers\ObjectSerializer.cs:line 378
at Stride.Core.Yaml.ContextAttributeSerializer.WriteYaml(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\ContextAttributeSerializer.cs:line 32
at Stride.Core.Yaml.ErrorRecoverySerializer.WriteYaml(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\ErrorRecoverySerializer.cs:line 165
at Stride.Core.Yaml.AssetObjectSerializerBackend.WriteMemberValue(ObjectContext& objectContext, IMemberDescriptor memberDescriptor, Object memberValue, Type memberType) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\AssetObjectSerializerBackend.cs:line 51
at Stride.Core.Yaml.Serialization.Serializers.ObjectSerializer.WriteMember(ObjectContext& objectContext, IMemberDescriptor member) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializers\ObjectSerializer.cs:line 429
at Stride.Core.Yaml.Serialization.Serializers.ObjectSerializer.WriteMembers(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializers\ObjectSerializer.cs:line 391
at Stride.Core.Yaml.Serialization.Serializers.ObjectSerializer.WriteYaml(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializers\ObjectSerializer.cs:line 378
at Stride.Core.Yaml.ContextAttributeSerializer.WriteYaml(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\ContextAttributeSerializer.cs:line 32
at Stride.Core.Yaml.ErrorRecoverySerializer.WriteYaml(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\ErrorRecoverySerializer.cs:line 165
at Stride.Core.Yaml.AssetObjectSerializerBackend.WriteMemberValue(ObjectContext& objectContext, IMemberDescriptor memberDescriptor, Object memberValue, Type memberType) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\AssetObjectSerializerBackend.cs:line 51
at Stride.Core.Yaml.Serialization.Serializers.ObjectSerializer.WriteMember(ObjectContext& objectContext, IMemberDescriptor member) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializers\ObjectSerializer.cs:line 429
at Stride.Core.Yaml.Serialization.Serializers.ObjectSerializer.WriteMembers(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializers\ObjectSerializer.cs:line 391
at Stride.Core.Yaml.Serialization.Serializers.ObjectSerializer.WriteYaml(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializers\ObjectSerializer.cs:line 378
at Stride.Core.Yaml.ContextAttributeSerializer.WriteYaml(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\ContextAttributeSerializer.cs:line 32
at Stride.Core.Yaml.ErrorRecoverySerializer.WriteYaml(ObjectContext& objectContext) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\ErrorRecoverySerializer.cs:line 165
at Stride.Core.Yaml.Serialization.Serializer.Serialize(IEmitter emitter, Object graph, Type type, SerializerContextSettings contextSettings) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializer.cs:line 203
at Stride.Core.Yaml.Serialization.Serializer.Serialize(Stream stream, Object graph, Type expectedType, SerializerContextSettings contextSettings) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\core\Stride.Core.Yaml\Serialization\Serializer.cs:line 158
at Stride.Core.Yaml.AssetYamlSerializer.Serialize(Stream stream, Object instance, Type type, SerializerContextSettings contextSettings) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Yaml\AssetYamlSerializer.cs:line 139
at Stride.Core.Assets.Serializers.YamlAssetSerializer.Save(Stream stream, Object asset, AttachedYamlAssetMetadata yamlMetadata, ILogger log) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Serializers\YamlAssetSerializer.cs:line 53
at Stride.Core.Assets.AssetFileSerializer.Save(Stream stream, Object asset, AttachedYamlAssetMetadata yamlMetadata, ILogger log) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\AssetFileSerializer.cs:line 173
at Stride.Core.Assets.AssetFileSerializer.Save(String filePath, Object asset, AttachedYamlAssetMetadata yamlMetadata, ILogger log) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\AssetFileSerializer.cs:line 142
at Stride.Core.Assets.Package.SaveSingleAsset_NoUpdateSourceFolder(AssetItem asset, ILogger log) in C:\BuildAgent\work\b5f46e3c4829a09e\sources\assets\Stride.Core.Assets\Package.cs:line 474
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with AssetPartCollectionSerializer.cs, especially FixupPaths at line 113, and follow the save path through YamlAssetSerializer.Save and Package.SaveSingleAsset_NoUpdateSourceFolder. Reproduce by editing an asset and pressing Ctrl+S repeatedly; done when repeated saves no longer produce the reported InvalidCastException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100