(Case 983772) Assertion failed: Null JobInfo in Steal

I reported this issue during alpha already, but I thought it might be a good idea to post it here as well, in case other people having the same problem.

Unity displays the following error to the Console window quite often while being in play-mode:

  • I noticed this error in different projects.
  • I believe this error occurs more often if vsync is turned off in the Quality Settings.
  • I believe this error occurs more often the more complex the project is.
  • In the bug-report project, it occurs perhaps once per play-mode.
  • In my actual game, it occurs every few frames.

Callstack

Assertion failed: Null JobInfo in Steal!
(Unity) StackWalker::GetCurrentCallstack
(Unity) StackWalker::ShowCallstack
(Unity) GetStacktrace
(Unity) DebugStringToFile
(Unity) JobQueue::Steal
(Unity) JobQueue::WaitForJobGroupID
(Unity) CompleteFenceInternal
(Unity) GeometryJobTasks::PutDynamicVBOGeometryJobFence
(Unity) DynamicVBO::smile:rawChunk
(Unity) GfxDeviceWorker::RunCommand
(Unity) GfxDeviceWorker::RunExt
(Unity) GfxDeviceWorker::RunGfxDeviceWorker
(Unity) Thread::RunThreadWrapper
(KERNEL32) BaseThreadInitThunk
(ntdll) RtlUserThreadStart

Callstack

Assertion failed: Null JobInfo in Steal!
(Unity) StackWalker::GetCurrentCallstack
(Unity) StackWalker::ShowCallstack
(Unity) GetStacktrace
(Unity) DebugStringToFile
(Unity) JobQueue::Steal
(Unity) JobQueue::WaitForJobGroupID
(Unity) CompleteFenceInternal
(Unity) DirectorManager::ExecutePrepareFrames
(Unity) DirectorManager::ExecuteStage
(Unity) `DirectorManager::InitializeClass'::`2'::PreLateUpdateDirectorUpdateAnimationBeginRegistrator::Forward
(Unity) ExecutePlayerLoop
(Unity) ExecutePlayerLoop
(Unity) PlayerLoop
(Unity) PlayerLoopController::UpdateScene
(Unity) Application::TickTimer
(Unity) MainMessageLoop
(Unity) WinMain
(Unity) __scrt_common_main_seh
(KERNEL32) BaseThreadInitThunk
(ntdll) RtlUserThreadStart

Callstack

Assertion failed: Null JobInfo in Steal!
(Unity) StackWalker::GetCurrentCallstack
(Unity) StackWalker::ShowCallstack
(Unity) GetStacktrace
(Unity) DebugStringToFile
(Unity) JobQueue::Steal
(Unity) JobQueue::WaitForJobGroupID
(Unity) CompleteFenceInternal
(Unity) EndRenderQueueExtraction
(Unity) CullResults::GetOrCreateSharedRendererScene
(Unity) Camera::CustomRender
(Unity) Camera::Render
(Unity) RenderManager::RenderCameras
(Unity) RepaintController::RenderGameViewCameras
(Unity) EditorGUIUtility_CUSTOM_INTERNAL_CALL_RenderGameViewCamerasInternal
(Mono JIT Code) (wrapper managed-to-native) UnityEditor.EditorGUIUtility:INTERNAL_CALL_RenderGameViewCamerasInternal (UnityEngine.RenderTexture,int,UnityEngine.Rect&,UnityEngine.Vector2&,bool)
(Mono JIT Code) [EditorGUIUtilityBindings.gen.cs:638] UnityEditor.EditorGUIUtility:RenderGameViewCamerasInternal (UnityEngine.RenderTexture,int,UnityEngine.Rect,UnityEngine.Vector2,bool)
(Mono JIT Code) [GameView.cs:747] UnityEditor.GameView:OnGUI ()
(Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
(mono) [mini.c:4937] mono_jit_runtime_invoke
(mono) [object.c:2623] mono_runtime_invoke
(mono) [object.c:3838] mono_runtime_invoke_array
(mono) [icall.c:2756] ves_icall_InternalInvoke
(Mono JIT Code) (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)
(Mono JIT Code) [MonoMethod.cs:222] System.Reflection.MonoMethod:Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo)
(Mono JIT Code) [MethodBase.cs:115] System.Reflection.MethodBase:Invoke (object,object[])
(Mono JIT Code) [HostView.cs:291] UnityEditor.HostView:Invoke (string,object)
(Mono JIT Code) [HostView.cs:284] UnityEditor.HostView:Invoke (string)
(Mono JIT Code) [HostView.cs:251] UnityEditor.HostView:InvokeOnGUI (UnityEngine.Rect)
(Mono JIT Code) [DockArea.cs:384] UnityEditor.DockArea:OldOnGUI ()
(Mono JIT Code) [IMGUIContainer.cs:203] UnityEngine.Experimental.UIElements.IMGUIContainer:smile:oOnGUI (UnityEngine.Event)
(Mono JIT Code) [IMGUIContainer.cs:358] UnityEngine.Experimental.UIElements.IMGUIContainer:HandleIMGUIEvent (UnityEngine.Event)
(Mono JIT Code) [IMGUIContainer.cs:70] UnityEngine.Experimental.UIElements.IMGUIContainer:smile:oRepaint (UnityEngine.IStylePainter)
(Mono JIT Code) [Panel.cs:664] UnityEngine.Experimental.UIElements.Panel:PaintSubTree (UnityEngine.Event,UnityEngine.Experimental.UIElements.VisualElement,UnityEngine.Matrix4x4,UnityEngine.Rect)
(Mono JIT Code) [Panel.cs:680] UnityEngine.Experimental.UIElements.Panel:PaintSubTreeChildren (UnityEngine.Event,UnityEngine.Experimental.UIElements.VisualElement,UnityEngine.Matrix4x4,UnityEngine.Rect)
(Mono JIT Code) [Panel.cs:668] UnityEngine.Experimental.UIElements.Panel:PaintSubTree (UnityEngine.Event,UnityEngine.Experimental.UIElements.VisualElement,UnityEngine.Matrix4x4,UnityEngine.Rect)
(Mono JIT Code) [Panel.cs:709] UnityEngine.Experimental.UIElements.Panel:Repaint (UnityEngine.Event)
(Mono JIT Code) [UIElementsUtility.cs:203] UnityEngine.Experimental.UIElements.UIElementsUtility:smile:oDispatch (UnityEngine.Experimental.UIElements.BaseVisualElementPanel)
(Mono JIT Code) [UIElementsUtility.cs:77] UnityEngine.Experimental.UIElements.UIElementsUtility:ProcessEvent (int,intptr)
(Mono JIT Code) [GUIUtility.cs:184] UnityEngine.GUIUtility:ProcessEvent (int,intptr)
(Mono JIT Code) (wrapper runtime-invoke) <Module>:runtime_invoke_bool_int_intptr (object,intptr,intptr,intptr)
(mono) [mini.c:4937] mono_jit_runtime_invoke
(mono) [object.c:2623] mono_runtime_invoke
(Unity) scripting_method_invoke
(Unity) ScriptingInvocation::Invoke
(Unity) ScriptingInvocation::Invoke<bool>
(Unity) IMGUIScriptingClasses::ProcessEvent
(Unity) GUIView::ProcessRetainedMode
(Unity) GUIView::OnInputEvent
(Unity) GUIView::ProcessInputEvent
(Unity) GUIView::smile:oPaint
(Unity) GUIView::RepaintAll
(Unity) PlayerLoopController::UpdateScene
(Unity) Application::TickTimer
(Unity) MainMessageLoop
(Unity) WinMain
(Unity) __scrt_common_main_seh
(KERNEL32) BaseThreadInitThunk
(ntdll) RtlUserThreadStart

I retested it with 2018.1.0b2 and it seems the error occurs fewer times than in b1. I tested my actual project as well and the error occurs once in a while, not every few frames anymore.

I also retested it with the project attached to the initial bug-report. I can reproduce the issue more or less reliable there. However, the time until this error occurs, seems to be random.

I recorded a video that shows the issue in b2. As you can see in the video, I was lucky and the issue occurred two seconds after I pressed Play. However, reproducing the error a second time, took about 3 minutes. My approach there is just to play around with the editor until the error occurs again, not sure if it makes a difference though.