Constant RoonAppliance.exe crash due to Imaqoo.NativeUtils.scale function (ref#4C9W6K)

Tell us what's going on

· I have ROON running for years on Linux Ubuntu 20.04LTS with no issues but an attempt to upgrade to Debian v13 failed horrible and I decided to host ROON on windows 10 instead. So the current installation is fresh and the database was restored from a backup (Roon Linux v2.7.1). However, on Windows I get constant RoonAppliance.exe crash in Imagoo.NativeUtils.scale method. Restarting the playback on the previous song and it works (thus does not seem to be related to the particular song).

Tell us about your home network

· Roon 2.71 runs in windows 10 Pro VMWARE Workstation, I am running the Roon frontend on another Windows 10 PC, not on the VM. Playback is on roon-ready EVO150 from CA. The client-pc running the frontend has two 4K display attached and is a Lenovo P360 ultra with Nvidia 1000, nothing special. Everything behaves perfectly normal.

Issue: roon stops playing after 4000 ~ 8500 secs of playing. RoonGoer.log indicates for example: "09/13 15:55:37 Info: RoonGoer: child exited code=-1073741819 (abnormal) after 8526s of life". The RoonServer_log shows no information, just the current playing song and then a new log is started.

09/13 15:55:15 Info: [broker/httpserver] scaled 600,600 => 128,128 in 1ms 09/13 15:55:15 Info: [broker/httpserver] scaled 600,600 => 128,128 in 1ms 09/13 15:55:15 Info: --[ SignalPath ]--------------------------------------------- SignalPath Quality = Enhanced Elements: Source Format=Alac 44100/24/2 BitRate=1778 Quality=Lossless UpgradeBitDepth FromBitsPerSample=24 ToBitsPerSample=64 Quality=Lossless VolumeNormaliation GainDb=-3,1623826854376786 Quality=Enhanced Truncate FromBitsPerSample=64 ToBitsPerSample=32 Quality=Lossless Raat Device=Cambridge Audio Evo 150 Balance Value=/-4 Quality=Lossless Amplifier Method=analog Quality=Lossless Output OutputType=Local_Speakers Quality=Lossless SubType= Model= ------------------------------------------------------------ 09/13 15:55:15 Debug: [easyhttp] [1445] GET to https://api.roonlabs.net/metadatatext/1/blobs?objectId=121:0:MW0002367870&type=review&sourceLangs=Rovi-albums:en,Wikipedia:en,Rovi-artists:en,Rovi-compositions:en&tidal=max returned after 107 ms, status code: 200, request body size: 0 B 09/13 15:55:15 Trace: GetImageData[Remote](id=619 spec=1by1_1024 key=vxaaaaaa uri=https://imagecache.roonlabs.net/im/1/artists/7a004d4e30303030393332363635/avatar/1by1_1024.jpg) => fetched in 69ms status=200 size=204016 overalltime=86ms 09/13 15:55:15 Debug: [easyhttp] [1447] GET to https://api.roonlabs.net/metadatatext/1/blobs?objectId=191:0:552721&type=biography&sourceLangs=Rovi-albums:en,Wikipedia:en,Rovi-artists:en,Rovi-compositions:en&tidal=max returned after 113 ms, status code: 200, request body size: 0 B 09/13 15:55:15 Trace: [library] starting cleanup with 1 dirty performers , 0 tracks to retain, 0 auxfiles to retain 09/13 15:55:15 Trace: [library] finished with 1 dirty performers 0 clumping tracks, 0 clumping auxfiles 0 compute tracks, 0 deleted tracks, 0 tracks to (re)load, 0 tracks to retain, 0 auxfiles to (re)load, 0 auxfiles to retain, and 1 changed objects 09/13 15:55:15 Info: [updatemetadata] Flush: pending adds=3991, pending removes=0, current q size=0 09/13 15:55:15 Info: [updatemetadata] _ReadyForFullRefresh: last_time=11-Sep-26 00:16:01 (UTC), now=13-Sep-26 13:55:15 (UTC), UpdateInterval=7.00:00:00 09/13 15:55:15 Info: [updatemetadata] _ReadyForFullRefresh: time_past_due=-4.10:20:45.5484654, is_within_window=False, should_update=False 09/13 15:55:15 Info: [updatemetadata] _ReadyForFullRefresh: last_time=11-Sep-26 00:16:01 (UTC), now=13-Sep-26 13:55:15 (UTC), UpdateInterval=7.00:00:00 09/13 15:55:15 Info: [updatemetadata] _ReadyForFullRefresh: time_past_due=-4.10:20:45.5483444, is_within_window=False, should_update=False 09/13 15:55:15 Info: [updatemetadata] Flush: not ready for full refresh (is_ready=False), keeping 3991 adds and 0 removes in pending lists 09/13 15:55:15 Trace: [dbperf] flush 0 bytes, 0 ops in 3 ms (cumulative 48209781 bytes, 0 ops in 933 ms) 09/13 15:55:15 Trace: [library] endmutation in 12ms 09/13 15:55:15 Debug: [easyhttp] [1446] GET to https://api.roonlabs.net/metadatatext/1/blobs?objectId=174:1:41c0f254-c33e-4311-81ee-3da0ed7739c3&type=description&sourceLangs=Rovi-albums:en,Wikipedia:en,Rovi-artists:en,Rovi-compositions:en&tidal=max returned after 139 ms, status code: 200, request body size: 0 B 09/13 15:55:15 Trace: GetImageData[Remote](id=72800 spec=128 key=asdeaaaa uri=https://imagecache.roonlabs.net/im/1/albums/79004d5730303032333637383730/cover/128.jpg) => fetched in 192ms status=200 size=6137 overalltime=194ms 09/13 15:55:15 Trace: GetImageData[Remote](id=72800 spec=64 key=asdeaaaa uri=https://imagecache.roonlabs.net/im/1/albums/79004d5730303032333637383730/cover/64.jpg) => fetched in 401ms status=200 size=2320 overalltime=403ms 09/13 15:55:18 Trace: [EVO150] [Enhanced, 24/44 ALAC => 32/44] [100% buf] [PLAYING @ 0:03/3:34] Woman Down - Alanis Morissette 09/13 15:55:19 Info: [stats] 2122574mb Virtual; 922mb Physical = 612mb GC-committed (465mb Managed-live = 75% of committed) + 310mb Native; 1634 Handles, 74 Threads, 0,16% of runtime in GC pauses, 227ms GC pause in last window (1,52% of window) 09/13 15:55:23 Trace: [EVO150] [Enhanced, 24/44 ALAC => 32/44] [100% buf] [PLAYING @ 0:08/3:34] Woman Down - Alanis Morissette 09/13 15:55:27 Trace: [EVO150] [zoneplayer/raat] sync Cambridge Audio Evo 150: realtime=40735353418663 rtt=3186us offset=32240706883us delta=-925us drift=34724us in 7794,8575806s (4,455ppm, 16,037ms/hr) 09/13 15:55:28 Trace: [EVO150] [Enhanced, 24/44 ALAC => 32/44] [100% buf] [PLAYING @ 0:13/3:34] Woman Down - Alanis Morissette 09/13 15:55:34 Info: [stats] 2122572mb Virtual; 922mb Physical = 612mb GC-committed (463mb Managed-live = 75% of committed) + 310mb Native; 1637 Handles, 73 Threads, 0,16% of runtime in GC pauses, 12ms GC pause in last window (0,08% of window) 09/13 15:55:34 Trace: [EVO150] [Enhanced, 24/44 ALAC => 32/44] [100% buf] [PLAYING @ 0:18/3:34] Woman Down - Alanis Morissette *** CRASH ***

Hi @Peter_Hartman,

Thanks for writing in and sharing your report! Based on your account admin, there appear to be multiple Windows machines running both Roon and Roon Server.

Could you share which machine specifically is experiencing the crash? We see the following machines running Roon Server:

RoonServer: VM920W

RoonServer: SRV

RoonServer: srv1

RoonServer: SRV2

From there, we’ll be able to enable auto-diagnostics from the machine to take a closer look at what might be going on.

Thank you!

Hi @Benjamin,
In an attempt to solve this issue, I have build a new VM called SRV and installed ROON.
So far the result looks promissing. I’ll report back tomorrow and if things keep running we can close this ticket.
SRV1 was the original Ubuntu server
SRV2 was the new Debian server that caused ROON “reachability has changed” messages every second and eventually ran out of memory.
VM920W was a first attempt at running windows that caused Imagoo.NativeUtils.scale crashes
SRV is my second attempt at running windows. Need a day to test reliability.

And of course, as usual, the moment you think it is solved it comes back.
This is on ROON installation SRV. The only thing that stands out is that late this morning I started to use ARC on an iPhone and an iPad. On both devices I activated Smart download and downloaded a couple of hundred songs, just to see if things work. None of these iOS devices where in use when 2 hours later Roon crashes:

Event 1026, .NET runtime 18 Sep 2026 12:16:44

Application: RoonAppliance.exe
CoreCLR Version: 10.0.1026.32716
.NET Version: 10.0.10
Description: The process was terminated due to an unhandled exception.
Stack:
at Imagoo.NativeUtils.scale(IntPtr, Int32, Int32, Int32, IntPtr, Int32, Int32, Int32)
at Imagoo.NativeUtils.scale(IntPtr, Int32, Int32, Int32, IntPtr, Int32, Int32, Int32)
at Imagoo.Utils.Scale(Byte*, Int32, Int32, Int32, Int32, Int32, Int32)
at Imagoo.Bitmap.Scale(Int32, Int32)
at Roon.Broker.Distributed.Server.ev_http_get(Roon.Http.HttpTransaction)
at Roon.Broker.Distributed.Server.process_http_https_request(Roon.Http.HttpTransaction, Boolean)
at System.Threading.QueueUserWorkItemCallback.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()
at System.Threading.Thread.StartCallback()

Perhaps you can see something from your end.

Stil getting the errors:

09/21 11:15:14 Debug: RoonServer, before attempting to start RoonAppliance binary at path: C:\Use
09/21 11:15:14 Debug: RoonServer, after starting RoonAppliance
09/21 13:26:44 Info: RoonGoer: child exited code=-1073741819 (abnormal) after 7890s of life
09/21 13:26:46 Debug: RoonServer, looking for RoonAppliance, trying: C:\Users\Peter\AppData\Local

I can not reproduce the ROON bug but the following components seem to be involved:

  1. In the ROON windows client show album art
  2. Modify settings to display Artist photo first and possibly enable album art: cycle through gallery
  3. While showing album art minimize the ROON windows client to the taskbar
  4. After a while the ROON server in the Windows VM triggers the unhandled exception and playback stops

Note that playing always stop in the middle of a track, never at the start of a track (why would it scale a picture unless it is rotating album art?). Replaying the track does not trigger the issue. Development should consider to add a try-catch to the “scale” function.

Hi @Peter_Hartman,

Thank you for your detailed and thorough testing.

We’ve combed through logs and escalated our findings to engineering for a more detailed analysis.

From what we’re seeing, no single poisoned or malformed artwork file is causing the corrupted state exception. One thing we couldn’t A/B test in logs was whether the Nest Hub was a factor, so as an immediate next step, try disabling this completely and trying to reproduce the problem on the remote.

Otherwise, we’ll take it from here and respond with next steps. Thanks!

First off: thanks for your reply. Good to hear we are looking into this.
Just for clarity:
I have tried the Nest Hub some years ago and I am not using it, it is disabled in ROON for years. I don’t think there is a way to remove it from ROON.
Today there was a ROON update pushed, so I am running ROON v2.73 as of 23Sep.

Since 23Sep no issues anymore. After the update to ROON v2.73 last Wednesday the issue is gone. Not a single hickup or anything. Just working…

Hello @Peter_Hartman

This issue is fixed by the R&D team, but the fix was not merged in our last release. It is good that you haven’t seen the issue, but it may come back. Please feel free to follow our release notes for further updates regarding this matter.