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:
- From Home, open one of Roon’s curated/editorial playlists (happened with “Roon Icons III” and “Slow-Fi”)
- Click an album from within that playlist to open its album details page
- 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/Rooncontains any.broocontent; 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.