Help with identifying cause and fix for crashing

4K 60 Hz TVs, Intel N100, 16 GB RAM, 512 GB NVMe, latest Windows Player, latest GPU driver, Windows 11 24H2, Windows 4 R404.1-404, CMS 4.2.2 Docker.

I have a display group with four displays. When I schedule a layout with a single 20‑second 1080p 60 fps video to individual displays, it seems stable. However, it appears that when I schedule the same layout to the display group, it becomes unstable almost immediately.

Any ideas?

Audit: <logdate>2025-05-06 13:44:26</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - Run</method><message>Schedule Timer Ticked</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - LoadNewSchedule</method><message>Skipping validity test for current layout.</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Media - SignalElapsedEvent</method><message>Media Complete</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Region</method><message>DurationElapsedEvent: Media Elapsed: 546.png</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Region</method><message>MediaExpiredEvent: Media Elapsed</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Region</method><message>SetNextMediaNodeInOptions: Region 1744 Expired</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Layout</method><message>DurationElapsedEvent: Region Elapsed</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Region</method><message>DurationElapsedEvent: All Regions have expired. Raising a Next layout event.</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>MainForm</method><message>ScheduleChangeEvent: Schedule Changing to Schedule 365, Layout 1188</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Region</method><message>StopMedia: 2177 stopping, region stopped True</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Region</method><message>Media_MediaStoppedEvent: 2177</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Region</method><message>SetNextMediaNode: New media detected global</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Region - CreateNextMediaNode</method><message>Creating new media: global, 2135</message>
Audit: <logdate>2025-05-06 13:44:26</logdate><thread></thread><method>Region</method><message>StartMedia: Starting media at position: 0</message>
Error: <logdate>2025-05-06 13:44:30</logdate><thread></thread><method>XiboRequestHandler</method><message>OnRenderProcessTerminate: a cef sub process has terminated. OutOfMemory, message: Out of Memory</message>
Audit: <logdate>2025-05-06 13:44:36</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - Run</method><message>Schedule Timer Ticked</message>
Audit: <logdate>2025-05-06 13:44:36</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - LoadNewSchedule</method><message>Skipping validity test for current layout.</message>
Audit: <logdate>2025-05-06 13:44:46</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - Run</method><message>Schedule Timer Ticked</message>
Audit: <logdate>2025-05-06 13:44:46</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - LoadNewSchedule</method><message>Skipping validity test for current layout.</message>
Audit: <logdate>2025-05-06 13:44:46</logdate><thread>XmrSubscriber</thread><method>XmrSubscriber - Run</method><message>Connected (tcp://signage.comapny.com:9505), last activity: 5/6/2025 1:44:46 PM</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - Run</method><message>Schedule Timer Ticked</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - LoadNewSchedule</method><message>Skipping validity test for current layout.</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Media - SignalElapsedEvent</method><message>Media Complete</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Region</method><message>DurationElapsedEvent: Media Elapsed: </message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Region</method><message>MediaExpiredEvent: Media Elapsed</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Region</method><message>SetNextMediaNodeInOptions: Region 1729 Expired</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Layout</method><message>DurationElapsedEvent: Region Elapsed</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Region</method><message>DurationElapsedEvent: All Regions have expired. Raising a Next layout event.</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>MainForm</method><message>ScheduleChangeEvent: Schedule Changing to Schedule 303, Layout 1027</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Region</method><message>StopMedia: 2135 stopping, region stopped True</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Region</method><message>Media_MediaStoppedEvent: 2135</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Region</method><message>SetNextMediaNode: New media detected global</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Region - CreateNextMediaNode</method><message>Creating new media: global, 1962</message>
Audit: <logdate>2025-05-06 13:44:56</logdate><thread></thread><method>Region</method><message>StartMedia: Starting media at position: 0</message>
Audit: <logdate>2025-05-06 13:45:06</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - Run</method><message>Schedule Timer Ticked</message>
Audit: <logdate>2025-05-06 13:45:06</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - LoadNewSchedule</method><message>Skipping validity test for current layout.</message>
Audit: <logdate>2025-05-06 13:45:16</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - Run</method><message>Schedule Timer Ticked</message>
Audit: <logdate>2025-05-06 13:45:16</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - LoadNewSchedule</method><message>Skipping validity test for current layout.</message>
Audit: <logdate>2025-05-06 13:45:16</logdate><thread>XmrSubscriber</thread><method>XmrSubscriber - Run</method><message>Connected (tcp://signage.comapny.com:9505), last activity: 5/6/2025 1:45:16 PM</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - Run</method><message>Schedule Timer Ticked</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - LoadNewSchedule</method><message>Skipping validity test for current layout.</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Media - SignalElapsedEvent</method><message>Media Complete</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Region</method><message>DurationElapsedEvent: Media Elapsed: </message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Region</method><message>MediaExpiredEvent: Media Elapsed</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Region</method><message>SetNextMediaNodeInOptions: Region 1546 Expired</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Layout</method><message>DurationElapsedEvent: Region Elapsed</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Region</method><message>DurationElapsedEvent: All Regions have expired. Raising a Next layout event.</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>MainForm</method><message>ScheduleChangeEvent: Schedule Changing to Schedule 310, Layout 1047</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Region</method><message>StopMedia: 1962 stopping, region stopped True</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Region</method><message>Media_MediaStoppedEvent: 1962</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Region</method><message>SetNextMediaNode: New media detected global</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Region - CreateNextMediaNode</method><message>Creating new media: global, 1981</message>
Audit: <logdate>2025-05-06 13:45:26</logdate><thread></thread><method>Region</method><message>StartMedia: Starting media at position: 0</message>
Error: <logdate>2025-05-06 13:45:27</logdate><thread></thread><method>Main</method><message>Unhandled Exception: UnhandledException: UCEERR_RENDERTHREADFAILURE (Exception from HRESULT: 0x88980406)</message>
Error: <logdate>2025-05-06 13:45:27</logdate><thread></thread><method>Main</method><message>Stack Trace:    at System.Windows.Media.Composition.DUCE.Channel.SyncFlush()
   at System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean enableRenderTarget, Nullable1 channelSet)
   at System.Windows.Interop.HwndTarget.UpdateWindowPos(IntPtr lParam)
   at System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)</message>
Info: <logdate>2025-05-06 13:45:27</logdate><thread></thread><method>Main</method><message>Couldn&apos;t write to event log: The source was not found, but some or all event logs could not be searched.  Inaccessible logs: Security.</message>
Info: <logdate>2025-05-06 13:46:12</logdate><thread></thread><method>MainForm</method><message>Player Initialised</message>
Audit: <logdate>2025-05-06 13:46:13</logdate><thread></thread><method>MainForm</method><message>SetMainWindowSize: window set to 0,0-3840x2160</message>
XMDS Location: http://signage.comapny.com/xmds.php?v=7
Info: <logdate>2025-05-06 13:46:14</logdate><thread>RegisterAgentThread</thread><method>RegisterAgent - Run</method><message>Thread Started</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>RegisterAgentThread</thread><method>RegisterAgent - Run</method><message>Thread Woken and Lock Obtained</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>LibraryAgent</thread><method>LibraryAgent - Run</method><message>Thread Started</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>RequiredFilesAgentThread</thread><method>RequiredFilesAgent - Run</method><message>Thread Started</message>
Audit: <logdate>2025-05-06 13:46:14</logdate><thread>RequiredFilesAgentThread</thread><method>ScheduleAgent - Run</method><message>Thread Woken and Lock Obtained</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - Run</method><message>Thread Started</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>DataAgent</thread><method>DataAgent</method><message>Run: Thread Started</message>
Audit: <logdate>2025-05-06 13:46:14</logdate><thread>ScheduleManagerThread</thread><method>ScheduleManager - Run</method><message>Schedule Timer Ticked</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>LogAgent</thread><method>LogAgent - Run</method><message>Thread Started</message>
Audit: <logdate>2025-05-06 13:46:14</logdate><thread>LogAgent</thread><method>RegisterAgent - Run</method><message>Thread Woken and Lock Obtained</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread></thread><method>ScheduleManager</method><message>Watcher_StatusChanged: Working on location fix</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>FaultsAgent</thread><method>FaultsAgent - Run</method><message>Thread Started</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>StatAgentThread</thread><method>StatAgent</method><message>Run: Thread Started</message>
Audit: <logdate>2025-05-06 13:46:14</logdate><thread>LibraryAgent</thread><method>LibraryAgent - Run</method><message>Number of required files = 68</message>
Audit: <logdate>2025-05-06 13:46:14</logdate><thread>ScheduleManagerThread</thread><method>MainForm</method><message>ScheduleChangeEvent: Schedule Changing to Schedule 5, Layout 805</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>XmrSubscriber</thread><method>XmrSubscriber - Run</method><message>Thread Started</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread></thread><method>ScheduleManager</method><message>Watcher_StatusChanged: No data</message>
Audit: <logdate>2025-05-06 13:46:14</logdate><thread></thread><method>Region</method><message>SetNextMediaNode: New media detected image</message>
Audit: <logdate>2025-05-06 13:46:14</logdate><thread></thread><method>Region - CreateNextMediaNode</method><message>Creating new media: image, 1724</message>
Audit: <logdate>2025-05-06 13:46:14</logdate><thread></thread><method>Region</method><message>StartMedia: Starting media at position: 0</message>
Info: <logdate>2025-05-06 13:46:14</logdate><thread>RegisterAgentThread</thread><method>PopulateFromXml</method><message>Unable to write [Item].</message>
Audit: <logdate>2025-05-06 13:46:15</logdate><thread>RequiredFilesAgentThread</thread><method>ScheduleManager - GetScheduleXmlString</method><message>Getting the Schedule XML</message>

It seems to only be happening when scheduled to a display group with multiple displays. A display group with one display is stable.

Error: <logdate>2025-05-08 14:36:12</logdate><thread></thread><method>Main</method><message>Unhandled Exception: Startup: Insufficient memory to continue the execution of the program.</message>
Error: <logdate>2025-05-08 14:36:12</logdate><thread></thread><method>Main</method><message>Stack Trace:    at System.Windows.Media.Imaging.WriteableBitmap..ctor(Int32 pixelWidth, Int32 pixelHeight, Double dpiX, Double dpiY, PixelFormat pixelFormat, BitmapPalette palette)
   at CefSharp.Wpf.Rendering.WritableBitmapRenderHandler.&lt;&gt;c__DisplayClass8_0.&lt;CreateOrUpdateBitmap&gt;b__0() in C:\projects\cefsharp\CefSharp.Wpf\Rendering\WritableBitmapRenderHandler.cs:line 145
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   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.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG&amp; msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Window.ShowHelper(Object booleanBox)
   at System.Windows.Window.Show()
   at System.Windows.Window.ShowDialog()
   at XiboClient.App.RunClient(Boolean screenSaver) in C:\Users\User\Documents\Source\xibo-dotnetclient\App.xaml.cs:line 116
   at XiboClient.App.OnStartup(StartupEventArgs e) in C:\Users\User\Documents\Source\xibo-dotnetclient\App.xaml.cs:line 79</message>
Info: <logdate>2025-05-08 14:36:12</logdate><thread></thread><method>Main</method><message>Application Finished</message>
Error: <logdate>2025-05-08 14:36:12</logdate><thread></thread><method>Main</method><message>Unhandled Exception: UnhandledException: Insufficient memory to continue the execution of the program.</message>
Error: <logdate>2025-05-08 14:36:12</logdate><thread></thread><method>Main</method><message>Stack Trace:    at System.Windows.Media.Imaging.WriteableBitmap..ctor(Int32 pixelWidth, Int32 pixelHeight, Double dpiX, Double dpiY, PixelFormat pixelFormat, BitmapPalette palette)
   at CefSharp.Wpf.Rendering.WritableBitmapRenderHandler.&lt;&gt;c__DisplayClass8_0.&lt;CreateOrUpdateBitmap&gt;b__0() in C:\projects\cefsharp\CefSharp.Wpf\Rendering\WritableBitmapRenderHandler.cs:line 145
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   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.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG&amp; msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run(Window window)
   at XiboClient.App.Main() in C:\Users\User\Documents\Source\xibo-dotnetclient\obj\x86\Release\App.g.cs:line 51</message>
Info: <logdate>2025-05-08 14:36:12</logdate><thread></thread><method>Main</method><message>Couldn&apos;t write to event log: The source was not found, but some or all event logs could not be searched.  Inaccessible logs: Security.</message>

Scheduling to a display or display group are technically identical operations; the player application doesn’t know anything about whether it is in a display group.

Can you pull out the schedule loop from the player info screen to see if there is any difference in the layoutIds it has calculated?

Additionally your logs are coming from CefSharp, which is odd given video only content. Are you embedding that video in a webpage?