XIBO Player for WIndows crashes on 4K screens

Before completing please check that the time, date and timezone have been correctly set on the device running the Player.

To be completed by the original poster:

Player Version

windows 4 R405.3-405 on WIndows 11 Enterprise 22H2 build 22621.1848

Issue

I have several XIBO Windows players, since a few weeks they crash on 4K screens. I swapped one between a full-HD and 4K screen and it only crashes when connected to the 4K screen.

CMS errors:

Unhandled Exception: Startup: Insufficient memory to continue the execution of the program.

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.<>c__DisplayClass8_0.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& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& 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& 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 119 at XiboClient.App.OnStartup(StartupEventArgs e) in C:\Users\User\Documents\Source\xibo-dotnetclient\App.xaml.cs:line 79

I have had similar issues with 4K on Windows. I think it’s because the player is only 32bit and so the RAM is limited to 4GB. In Windows, I change the resolution of the display to 1920x1080. I think there’s a new unified player in the works that will be 64bit and should help with 4K.

We have exactly the same error on our bigger display (8640x1920) with version 4r406.3-406.
Maybe that was the problem we had with 405 too. I didnt look at the logs, i just installed the old version again.

With version v4r404.1-404 the layout is playing on that screen. Maybe that works for you too.

Hello,

We are experiencing exactly the same issue.

We are running a Windows system with three monitors configured in extended display mode. Each screen has a resolution of 1920Ă—1080.

As a result, Xibo detects a single combined display with a resolution of 5760Ă—1080.

We split this 5760-pixel width into three separate regions in order to display different content on each screen.

However, as soon as we add a video to one of these three regions, Xibo crashes.

The application freezes and eventually reports a memory-related error.

We tried reducing the video resolution significantly (down to 560px width), but the problem still occurs.

We have also tested versions 401 and 405, with the same result.

The issue does not seem to happen when only two screens are used (3840Ă—1080).

Does anyone have any advice or a possible workaround?

Thank you in advance.

We are evaluating the Android DSDevices DSDA1 player. That player is able to display the same content successfully on a 4K screen.

Here is the corresponding GitHub issue: XfW: Version R405.3 running on Windows 11 crashes after freezing when connected to displays above 1080p resolution (1440p/4K) · Issue #3824 · xibosignage/xibo

We’re broadly in agreement with your assessment, although its worth noting that it doesn’t effect every machine in the same way. For example, the current windows player development happens at 4k, and we’ve got a video wall running which is above 4k resolution, without problems.

The exception pasted above relates to CEF, and you could try disabling it completely by adjusting your local config XML:

  • UseCefWebBrowser=false
  • FallbackToEdge=true

Apparently new versions of CEF might solve it, which i’m looking into now.

Our main focus of development is with the new unified player app (electron based, windows/Linux compatibility).

Thanks, I can try that.

For the unified electron app ( I know it’s beta), I couldn’t get it to connect to my local docker based CMS. Same for the Amazon Signage Stick. Is there something I’m missing here with these players? Like a port that needs to be opened on the server side?

They both use the standard API, nothing special. I’d expect them to work against a local Docker CMS just fine. If you’re in the private beta, it would be great to feedback that it doesn’t work against a local docker CMS, providing any other details you can.

Unfortunately, this didn’t pan out. The new version of CEF doesn’t support laying a browser instance over the top of other content (so called “airspace” issues). Incidentally that is where the memory goes - the web content is rendered offscreen into a bitmap which can then be overlaid onto of other controls with transparency. The larger the resolution, the larger the bitmap needed and this then hits the 32bit memory limits.

There are a bunch of blockers to a 64bit build and i’d prefer to focus on the unified electron player, overcoming the problems we find there instead.

That being said, there will be a release of the windows player shortly which aims to solve a bunch of long standing memory related issues.

Hi,

can you confirm that these parameters are located in the default.config.xml file which is in the xibo player folder ?

Do we have to change theses parameters directly in the config file or is there a menu in the CMS to change this ?

Regards

Yes that’s right - in the default config file.

The latest windows player app is “large address aware” and may solve the 4K issue, if you’d like to try it.

Thanks,

yes I saw and applyed the latest windwos player version because I’m struggling with random (but numerous) CEFsubprocess crashes. Unfortunately, it doesn’t solved the problem :frowning:

If you have any hint, I would really appreciate because we didn’t change anything and several players have this problem and the alert is displayed above our layouts…