Roon playback stops after 30-90 seconds on Mac (ref#KEC934) [Ticket In]

P.S. to @benjamin

  1. Word Document – I had e-mailed it to Contact[at]RoonLabs[dot]com. I also just now uploaded it to your Zoho as well.

  2. 5 Minutes 20 Seconds – I uploaded a video to you. As you will see, I did not see any Roon zones disappear. Did I do something wrong? Did I misunderstand your instructions/request? To clarify, I did not see if you wanted me to run Roon app/GUI as well as Roon Server, but I assume that you did. I did not see any zones disappear. Do you want me to do something else?

  3. roon-lo0.pcap – I just now uploaded to you the Terminal output. I had to deal with a family matter, so it ran about 7-8 minutes, not just six minutes. Just giving you a heads-up. You did not say whether you also wanted Roon app/GUI running, but I did so. And yes, the song stopped about 5-6 minutes after Roon Server was started (I killed it just before running these tests).

Thank you for reviewing the uploaded docs/info, and hopefully the developers/engineers can fix this bug with all of the details! :grinning_face:

FWIT, immediately below is ChatGPT’s analysis of the file that I uploaded yesterday, roon-lo0.pcap:

_____________________________

This is the clearest evidence yet. I parsed the packet capture, and it appears to tell us which side goes silent first.

For almost five minutes, Roon Server and RAATServer communicate normally over localhost, exchanging an 8-byte heartbeat about every two seconds. Then Roon Server abruptly stops sending its application-level heartbeat at about +298.09 seconds. RAATServer does not die: it continues sending its own heartbeats at +300.14, +302.14, +304.14 and +306.14 seconds. Then, 10.05 seconds after the last heartbeat from Roon Server, RAATServer gives up and cleanly closes the connection.

That is almost exactly the 10-second timeout sequence Roon said they were looking for.

Even more telling: during those final seconds, your Mac is still TCP-ACKing RAATServer’s incoming packets. So the localhost TCP stack is alive, RAATServer is alive, and packets are getting through. What stops is Roon Server’s application-level communication to RAATServer.

Net-net

RAATServer does not appear to be the thing failing first. Roon Server stops talking to it. RAATServer waits 10 seconds and then times it out.

That substantially strengthens the case for a Roon Server internal timer/thread/heartbeat/connection-management problem rather than your DAC, music files, App Tamer, CPU load, or RAATServer crashing. I still can’t prove from a packet capture alone whether some third-party macOS component somehow causes Roon Server to stop servicing that connection, but the evidence is now much more focused.

There is also a later burst of repeated connections to a closed localhost port 62468, immediately rejected with TCP resets. That looks very much like the separate runaway-retry bug Roon has already acknowledged, although the packet capture alone cannot identify the originating process with absolute certainty.

One timing nuance: the connection itself closes 308.14 seconds after it was opened, not 321–323 seconds after the beginning of this capture. But Roon’s measurement is from Roon Server process startup, not from when this particular TCP connection was established. If Roon Server took roughly 13–15 seconds after launch to establish this connection, the two measurements line up almost perfectly with their 321–323-second finding.

I would send Roon this .pcap immediately. In fact, I would highlight one sentence to Benjamin:

The capture appears to show that Roon Server stops sending its 2-second application heartbeat first; RAATServer continues transmitting normally for another ~8 seconds and then closes the connection ~10.05 seconds after Roon Server’s last heartbeat.

That is exactly the kind of evidence their engineers were hoping this capture would provide.

Even more telling: during those final seconds, your Mac is still TCP-ACKing RAATServer’s incoming packets. So the localhost TCP stack is alive, RAATServer is alive, and packets are getting through. What stops is Roon Server’s application-level communication to RAATServer.

Net-net

RAATServer does not appear to be the thing failing first. Roon Server stops talking to it. RAATServer waits 10 seconds and then times it out.

That substantially strengthens the case for a Roon Server internal timer/thread/heartbeat/connection-management problem rather than your DAC, music files, App Tamer, CPU load, or RAATServer crashing. I still can’t prove from a packet capture alone whether some third-party macOS component somehow causes Roon Server to stop servicing that connection, but the evidence is now much more focused.

There is also a later burst of repeated connections to a closed localhost port 62468, immediately rejected with TCP resets. That looks very much like the separate runaway-retry bug Roon has already acknowledged, although the packet capture alone cannot identify the originating process with absolute certainty.

One timing nuance: the connection itself closes 308.14 seconds after it was opened, not 321–323 seconds after the beginning of this capture. But Roon’s measurement is from Roon Server process startup, not from when this particular TCP connection was established. If Roon Server took roughly 13–15 seconds after launch to establish this connection, the two measurements line up almost perfectly with their 321–323-second finding.

I would send Roon this .pcap immediately. In fact, I would highlight one sentence to Benjamin:

The capture appears to show that Roon Server stops sending its 2-second application heartbeat first; RAATServer continues transmitting normally for another ~8 seconds and then closes the connection ~10.05 seconds after Roon Server’s last heartbeat.

That is exactly the kind of evidence their engineers were hoping this capture would provide.

Hi @benjamin and @vadim

I hope that all is well with you.

As it has been several days since we uploaded all of the Roon logs and Terminal output, do you, the developers and engineers have any update at this point? Any ETA on a fix for the bug?

Have a great day, and thanks for letting me know about the above. Much appreciated.

Best regards,

Evan

Hi @EvanKatz,

Thanks for the updates! We’ve passed them along to the team for further analysis, and we’ll be in touch once we’ve had time to take a closer look.

Thanks for your patience in the meantime!

P.S. - I see you’ve also reached out via our contact email as well - all technical support is handled here via the community, so we’ll go ahead and close that email thread to prevent communication from getting tangled.

Hi @benjamin

Thank you for the update.

Hopefully there is a bug fix out this week. That would be great, very helpful, and much appreciated.

Have a good day.

Best regards,

Evan

Hi @EvanKatz,

Considering our team still needs to investigate the failures further, I don’t believe there will be any fixes released this week, unfortunately. Thanks for your ongoing patience, though.

Hi @benjamin

Thanks!

Any update or bug fix ETA?

Best regards,

Evan

Hi @EvanKatz,

Thanks for your patience, and thanks for running the packet capture, we were able to analyze it further and have the following info to share:

Your capture confirms what the log timing was pointing at. On the loopback connection between Roon Server and RAATServer, Roon Server stops sending its two-second heartbeat first. RAATServer keeps transmitting normally for another ~8 seconds, your Mac’s TCP stack keeps acknowledging those packets, and RAATServer then times the session out ~10 seconds after Roon Server’s last heartbeat. That rules out most of what we had been chasing: RAATServer is not being killed or suspended, your DAC is not dropping out, and this is not CPU load or your music files. Something inside Roon Server stops servicing that connection roughly five minutes after Roon Server launches, and everything you experience downstream, the zone going silent, the pause button not responding, follows from that.

It also explains the “30 to 90 seconds” pattern you first reported: the clock that matters is when Roon Server started, not when you pressed play.

As we’ve already mentioned, we have a development ticket open for the reconnect behavior visible in your logs, Roon Server retrying a destroyed audio session indefinitely with no backoff. That work is real and it is being done, but it only stops the retry storm after the session has already died. It will not stop your music from stopping. The cause of the drop is a separate problem, and we do not have a fix or a date for it yet. We would rather tell you that plainly than give you a week and then miss it.

What would help most now, in order of value:

  1. A stack sample of Roon Server taken during the stall. This is the missing piece, we can see that Roon Server goes quiet, but not what its threads are doing at that moment. Quit Roon completely, start Roon Server, and immediately paste this into Terminal:
sleep 285; sample RoonServer 60 -file ~/Desktop/roonserver_stall.txt

It will sit quiet for about five minutes and then write the file. Please note the wall-clock time you launched Roon, send us that file, and send fresh Roon logs from the same run so we can line the two up.

2. Your storage configuration. In Settings → Storage, list every location shown, including any that are greyed out, offline, external, or on a network share. Then, as a test, disable all of them, restart Roon Server, and tell us whether the drop still lands at the five-minute mark. Your load average was sitting near nine on eight cores while CPU was only 20–30%, which means a lot of threads waiting on something rather than working, a storage location that is slow or unreachable is one of the few things that produces exactly that.

3. A clean macOS user account. You have said Safe Mode is not practical on a production machine, and that is fair. Creating a new user account on the same Mac, logging into it, and running Roon there gets us most of the same isolation without disturbing your setup, it rules out login items, permissions, and per-user utilities in a single step.

If the drop still happens at ~5:20 in a fresh account with no storage locations configured, that narrows this to Roon Server itself and gives our developers something much sharper to work from. Thank you!

Thank you. Will do all or most of this.

I have many pressing deadlines, but I will do it ASAP.

Hi @EvanKatz,

Thanks for the update, and for fitting this in around your deadlines.

That stack sample and the storage checks will be the most useful next pieces. Please send the sample from the same run as the fresh Roon logs, and include every storage location you see in Settings → Storage, including anything greyed out, offline, external, or on a network share. If you use a new macOS user account for the test, that will help isolate whether the issue follows the system or the user environment.

Let us know what you find when you have time to dig into this, we’ll be standing by.

Ok. Will do.

Have a great day.