stride3d / stride3d/stride

Error when spamming Ctrl + S in integrated error (UPDATE: it's on whole stride, not only editor)

Open
#1,915 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug
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
image

To Reproduce
Steps to reproduce the behavior:

  1. edit something
  2. spam CTRL + S
  3. 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)
Stride GameStudio_nVDMWccDC2

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.