Roon crashes instantly when using Back button on macOS (ref#MCGBH5)

Hi! What’s not quite right with Roon?

· None of the above quite fits

None of the above quite fits

· None of these quite match

Tell us what's going on

· Roon quits instantly when pressing Back to return to a playlist screen — 2.71 build 1683, macOS

Tell us about your home network

· Roon server running on Synology NAS DS1825+ on ethernet , Macbook Pro connected directly to ethernet & USB DAC

System

Roon Server: Synology NAS (“TARDIS”), Roon 2.71 (build 1683) production
Remote/client: Roon 2.71 (build 1683) production on MacBook Pro (Mac15,6, M3 Pro), macOS 26.6.2
Networking: wired/Wi-Fi LAN, client and server on the same subnet — no VPN or tunnel in use at the time
Library size: [FILL IN]
Audio devices: [FILL IN]

Core and remote are on the identical build, so this is not a version mismatch.

Description of issue

The Roon desktop app terminates instantly — no error dialog, no beachball, no macOS crash report — when I press the Back arrow to return to a playlist screen.

Reproduction:

  1. From Home, open one of Roon’s curated/editorial playlists (happened with “Roon Icons III” and “Slow-Fi”)
  2. Click an album from within that playlist to open its album details page
  3. Press the Back arrow in the top bar

Roon exits immediately on mouse-release.

This is not a timing or loading race. I reproduced it after leaving the album page open and fully loaded for six minutes before pressing Back. The crash is in rebuilding the playlist screen on the return leg, not in loading anything.

It happened three times today (13:08:33, 13:13:29, 13:21:13 local, UTC+2), every time with the same stack.

Because the app catches the exception and exits cleanly, macOS writes no .ips crash report — ~/Library/Logs/DiagnosticReports contains nothing for Roon. The evidence is only in ~/Library/Roon/Logs.

Navigation sequence immediately before the crash

13:15:19  UI-FORCE-UNLAZY: mode: editorialplaylistdetails
13:15:19  UI-NAV: roon playlist details / playlist: / focus: / bookmarkdata: [object Broo.Runtime.BrooMap]
13:15:19  [ui] playlistdetails: no improver model to restore
13:15:19  [ui] playlistdetails: chosen improver type=none
13:15:19  [ui] playlistdetails: trigger, improver button not shown,
                try to generate new improvers for pl=Roon Icons III
13:15:21  UI-FWD: mode: albumdetails
          ... idle, fully loaded, ~6 minutes ...
13:21:13  *** crash ***

Exception

Roon Version:   2.71 (build 1683) production
OS Version:     Mac OS X 26.6.2
Hardware:       Mac15,6 / Apple M3 Pro

--[ BROOSCRIPT EXCEPTION ]-------------------------------------------

    Exception Message: Property get not found on type
                       Broo.Engine.ScrollPanel: restore_scroll_after_reload

    at /Client/ui/playlistdetails.broo:503  function anon_12991
    at /Client/ui/main.broo:480             function GMS_back
    at /Client/ui/topbar.broo:483           action

--[ INNER EXCEPTION ]------------------------------------------------
   Type:        Broo.PropertyGetterNotFoundException
   Target Site: Binding.GetMember
   Message:     Property get not found on type
                Broo.Engine.ScrollPanel: restore_scroll_after_reload

   Broo.Runtime.Binding.GetMember(Value value, String name, Boolean isconstcontext)
   Broo.Runtime.Interpreter.Run(Scope scope, BrooxCode code, ArgList args, String name)

--[ OUTER EXCEPTION ]------------------------------------------------
   Type:    Broo.BrooScriptException
   Message: Exception in brooscript

   Broo.Runtime.Interpreter.Run(...)
   Broo.Runtime.Action/ActionScope.Run()
   Broo.Engine.Widget.TouchDone(TouchDoneEvent ev)
   Broo.Engine.TouchNode.DoTouchDone(HitList hits, TouchDoneEvent ev)
   Broo.Engine.Engine._PrimaryMouseUp(Boolean shifted, Single x, Single y, Boolean is_cancel)
   Broo.Engine.Engine.ev_PrimaryMouseUp(Boolean shifted, Single x, Single y)
   Broo.Engine.BrooOpenGLView.<MouseUp>b__0()
   Broo.Engine.DeviceTarget.GuiMainLoop()
   Sooloos.Application.Main(String[] argv)

Read bottom-up: mouse-up on the top-bar Back button → GMS_back → the playlist details screen’s scroll-restore path → unhandled PropertyGetterNotFoundException → process exits.

Likely root cause

BrooEngine.dll in the 1683 bundle registers this member as a method, not a property:

$ strings /Applications/Roon.app/Contents/MonoBundle/BrooEngine.dll | grep restore_scroll
method_restore_scroll_after_reload

But playlistdetails.broo:503 reaches it via Binding.GetMember — a property read. Hence “Property get not found” rather than “member not found”. It looks like a missing getter on ScrollPanel, or a property read where a method call was intended.

Both files ship together in the same app bundle (Contents/Resources/ui.brooxgz and Contents/MonoBundle/BrooEngine.dll), so this isn’t cached or downloaded state on my side.

A non-fatal variant of the same fault

The same exception also fires while sitting on a playlist details page, where it is caught and survived — logged as Critical but not fatal:

13:08:46  Critical: while dispatching events:
          ===[ BrooScript Exception ]===
          Broo.PropertyGetterNotFoundException: Property get not found on type
              Broo.Engine.ScrollPanel: restore_scroll_after_reload
              at /Client/ui/playlistdetails.broo:495  function anon_12991
              at /Client/ui/playlistdetails.broo:368  function anon_12981

So the same missing member is hit from two call sites. Only the one reached via GMS_back is unhandled and kills the app.

What I’ve already ruled out

  • Not a Core/remote version mismatch — both on 2.71 build 1683 production
  • Not a load-timing race — reproduced after six minutes fully idle and loaded
  • Not local cached state — nothing under ~/Library/Roon contains any .broo content; the UI script ships inside the app bundle
  • Not a network problem — image fetches from the Core complete in ~100ms in the same log window

Workaround I’m using

Never return to a playlist screen with Back. Navigating away via the sidebar instead never calls GMS_back and doesn’t crash.

Confirmed; also crashes for me, on 2.73 (1686 EA)

MacOS 26.5.2

Update : Deleting the roon folder in Library (after exiting the application) causes roon to recreate this folder on the roon remote app on macos .

Since doing this, it has stabilized . Will see how much this will last before resurfacing

Hello @Randolph_Spiteri @Calum_Mackay

The analysis in your report is correct on the parts that matter. The crash is in the scroll-restore path on the return leg, it is not a load-timing race, and it is not local cached state. The stack points at exactly the right place.

The suggested cause is not right, though. It is not a missing getter, and not a property read where a method call was intended. The member exists, but only on the list widget that the regular playlist screens use. Roon’s own curated playlists are built on a different screen using a plain scroll panel, which does not have it. That is why it fires on “Roon Icons III” and “Slow-Fi”, and why the exception reads as a failed property get rather than a missing method.

This lives in the app itself, so deleting the Roon folder in your Library does not change it. We expect it to come back once you have opened a curated playlist, gone into an album, and pressed Back. Please let us know when it does, and whether it stays limited to the curated playlists.

Calum, thanks for confirming on 2.73. That tells us it is not already fixed in Early Access.

Your sidebar workaround is the right one in the meantime.

Hello @Randolph_Spiteri @Calum_Mackay

This is fixed. It shipped on 30 September in Roon 2.73.1, build 1696, which is now the production build on all platforms.

Please update and let us know if you still see it. The sidebar workaround is no longer needed, and Back from an album inside a curated playlist should return you to the playlist normally.

Release notes: Roon 2.73.1 Hotfix is Live!

Yup, working fine for me, 1697 EA.

thanks vadim.