View Issue Details

IDProjectCategoryView StatusLast Update
00305282.x IDE BugsSource ControlPublic2019-02-28 15:41
ReporterDanAssigned ToSteven Campbell 
PriorityMediumSeverityA - Crash/HangReproducibilityUnable To Reproduce
Status ClosedResolutionFixed 
Platform-OSWindows 10OS VersionPro x64
Product Version2.2.0 
Target Version2.2.2Fixed in Version2.2.2 
Summary0030528: Source Control: "Collection was modified; enumeration operation may not execute." when creating repository
DescriptionUser saw a GMS2 cash message after creating a repository via GMS2's source control commands.

ui.log shows the following:

[19:19:34:796(2395)] --------------------------------------------------------------------------------
[19:19:34:797(2395)] Unhandled Exception: System.InvalidOperationException
[19:19:34:799(2395)] Exception message: Collection was modified; enumeration operation may not execute.
[19:19:35:487(2395)] Exception stack: at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
   at YoYoStudio.GUI.GUIBase.FindGadget(String _layoutid, Boolean _recurse)
   at YoYoStudio.GUI.GUIBase.FindGadget(String _layoutid, Boolean _recurse)
   at YoYoStudio.GUI.GUIBase.FindGadget(String _layoutid, Boolean _recurse)
   at YoYoStudio.GUI.GUIBase.FindGadget(String _layoutid, Boolean _recurse)
   at YoYoStudio.GUI.GUIBase.FindGadget(String _layoutid, Boolean _recurse)
   at YoYoStudio.GUI.GUIBase.FindGadget(String _layoutid, Boolean _recurse)
   at YoYoStudio.GUI.GUIBase.FindGadget(String _layoutid, Boolean _recurse)
   at YoYoStudio.GUI.GUIBase.FindGadget(String _layoutid, Boolean _recurse)
   at YoYoStudio.GUI.GUIBase.FindGadget[T](String _layoutid, Boolean _recurse)
   at YoYoStudio.Plugins.SourceControlGit.SourceControlGitCommit.UnlockAllButtons()
   at YoYoStudio.Plugins.SourceControlGit.SourceControlGitCommit.StatusUpdate()
   at YoYoStudio.Plugins.MethodContainer.(Object[] )
   at YoYoStudio.Plugins.Command.execute_object(String _command, Object _focus, Object[] paramaters)
   at YoYoStudio.Plugins.Command.Perform(Function _command, String _action, Object[] _parameters)
   at YoYoStudio.Plugins.Command.execute_object(String _command, Object _focus, Object[] paramaters)
   at YoYoStudio.Plugins.SourceControlGit.SourceControlGit.status(List`1 _paths)
   at YoYoStudio.Core.Utils.SourceControl.SourceControl.<>c__DisplayClass32_0.<Status>b__1()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at YoYoStudio.Core.Utils.SourceControl.SourceControl.<>c__DisplayClass32_0.<<Status>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at YoYoStudio.FileAPI.FileRequest.<Execute>d__17.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at YoYoStudio.FileAPI.AsyncQueue.<ExecuteRequest>d__28.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
[19:19:35:488(2395)] --------------------------------------------------------------------------------
Steps To ReproduceUnsure at this time
Additional Informationhttps://yoyogames.zendesk.com/agent/tickets/152144
TagsIDE, SourceControl
2.x IDE Found In2.2.0.343
2.x Runtime Found In2.2.0.258
2.x IDE Verified In2.2.2.397
2.x Runtime Verified In2.2.2.311

Activities

Dan

2019-02-14 17:33

Adminstrator  

ui.log (88,925 bytes)
ui_crash.log (86,711 bytes)

Steven Campbell

2019-02-19 14:37

Manager   ~0063246

This would have been caused by the Commit window being left open, and a background task updating source control.
Because the commit window would be updated too, there'd be a risk of UI work being done while it's still processing the previous list - which is what happened here.

Dan

2019-02-20 11:52

Adminstrator   ~0063260

IDE 394+

Scott Dunbar

2019-02-28 15:41

Adminstrator   ~0063404

The issue could not be reproduced in:
IDE 2.2.2.397 Runtime 2.2.2.311

Following Steven's comment - I created a repository and had files to commit. with the commit window open I used an external application to commit the already pending changes out with GMS2. returning to GMS does not immediately update but attempting to commit refreshes the UI and no conflict/crash/other unexpected behaviour occurs.

Satisfied with the fix, closing.