Roon pauses/crashes on wake up of NAS HDDs from sleep [fixed for next build]

I have my music stored on a NAS (Synology 713+). The HDDs (2x WD Red 4TB) in that NAS will go into sleep mode when the discs are not accessed for a given amount of time.

I noticed that when I am listening to TIDAL tracks, the disks do in fact go to sleep (great!). When I switch back to playing a track from the NAS, the disks start waking up again (again, great!). However, before the disks have woken up, Roon has already paused the tracks (not so great). In some occasions, Roon (Remote) has crashed under these circumstances as well (far from great).

I’m running Roon Server on a SonicTransporter i5 and Roon Remote on a Intel Core i7 4970 / 16GB / Windows 10. I’m running Roon Remote 1.2 (build 168) and Roon Server 1.2 (build 165).

I believe to hav found some relevant info in the logs:

    1/30 22:30:13 Warn: [remoting] connection received no data for 10585ms. Assuming dead.
    01/30 22:30:13 Info: [brokerclient] Connection dropped: Ra (09a22c6a-fa3c-45ab-a057-263463655f7f) @ 10.0.0.7:9101
    01/30 22:30:13 Debug: [remoting] firing request callback with null because of dispose
    01/30 22:30:13 Debug: [remoting] firing request callback with null because of dispose
    01/30 22:30:13 Debug: [remoting] firing request callback with null because of dispose
    01/30 22:30:13 Debug: [remoting] firing request callback with null because of dispose
    01/30 22:30:13 Debug: [remoting] firing request callback with null because of dispose
    01/30 22:30:13 Debug: [remoting] firing request callback with null because of dispose
    01/30 22:30:13 Debug: [remoting] firing request callback with null because of dispose
    01/30 22:30:13 Debug: [remoting] firing request callback with null because of dispose
    01/30 22:30:13 Critical: while dispatching events: System.InvalidOperationException: Operation is not valid due to the current state of the object.
       at Base.Result`1.get_Value()
       at Sooloos.Client.Models.brooexposure_BROKERZone.<>c__DisplayClass9.<method_play_tracks>b__8(Result`1 res)
       at Sooloos.Concurrency.Version.DispatchPostHandlers(Object o)
       at Sooloos.Concurrency.SharedState`1.FlushEvents()
    01/30 22:30:13 Info: 
    Local Time:            01/30/2017 22:30:13 +01:00
    Device Serial Number:  56996DD6-91C4-4444-A61A-F848BA55986E
    Roon Version:       1.2 (build 168) stable
    OS Version:            Windows 10

    Application Domain:    Roon.exe
    Assembly Codebase:     file:///C:/Users/bartv/AppData/Local/Roon/Application/Roon.exe
    Assembly Full Name:    Roon, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

    CPU0 Description:      Intel64 Family 6 Model 60 Stepping 3 3601 MHz (64-bit)
    CPU0 Num Cores:        Physical: 4 Logical: 8

    GPU0 Description:      NVIDIA GeForce GTX 970 0 MB
    GPU0 Video Mode:       1920 x 1200 x 4294967296 colors
    GPU0 Driver Version:   21.21.13.7570

    SCREEN0 Name:          \\.\DISPLAY1 (primary)SCREEN0 Bounds:        0,0 1920x1200

       Exception Source:      Base
       Exception Type:        System.InvalidOperationException
       Exception Target Site: Result`1.get_Value
       Exception Message:     Operation is not valid due to the current state of the object.
       Exception Data:        none

       --[ Stack Trace ]------------
       Base.Result`1.get_Value()
           Base.DLL, IL 13, N 64
       Sooloos.Client.Models.brooexposure_BROKERZone/<>c__DisplayClass9.<method_play_tracks>b__8(Result`1 res)
           Roon.Client.BrooModels.DLL, IL 0, N 19
       Sooloos.Concurrency.Version.DispatchPostHandlers(Object o)
           Roon.Broker.Concurrency.DLL, IL 56, N 127
       Sooloos.Concurrency.SharedState`1.FlushEvents()
           Roon.Broker.Concurrency.DLL, IL 84, N 270
       Sooloos.Broker.State.BeginAccess(List`1 out_mutated_objects)
           Roon.Broker.Core.DLL, IL 40, N 113
       Broo.Engine.DeviceTarget.GuiMainLoop()
           BrooEngine.DLL, IL 159, N 603
       Sooloos.Application.Main(String[] argv)
           Roon.exe, IL 1714, N 3880

    01/30 22:30:13 Error: 
    Local Time:            01/30/2017 22:30:13 +01:00
    Device Serial Number:  56996DD6-91C4-4444-A61A-F848BA55986E
    Roon Version:       1.2 (build 168) stable
    OS Version:            Windows 10

    Application Domain:    Roon.exe
    Assembly Codebase:     file:///C:/Users/bartv/AppData/Local/Roon/Application/Roon.exe
    Assembly Full Name:    Roon, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

    CPU0 Description:      Intel64 Family 6 Model 60 Stepping 3 3601 MHz (64-bit)
    CPU0 Num Cores:        Physical: 4 Logical: 8

    GPU0 Description:      NVIDIA GeForce GTX 970 0 MB
    GPU0 Video Mode:       1920 x 1200 x 4294967296 colors
    GPU0 Driver Version:   21.21.13.7570

    SCREEN0 Name:          \\.\DISPLAY1 (primary)SCREEN0 Bounds:        0,0 1920x1200

       Exception Source:      Base
       Exception Type:        System.InvalidOperationException
       Exception Target Site: Result`1.get_Value
       Exception Message:     Operation is not valid due to the current state of the object.
       Exception Data:        none

       --[ Stack Trace ]------------
       Base.Result`1.get_Value()
           Base.DLL, IL 13, N 64
       Sooloos.Client.Models.brooexposure_BROKERZone/<>c__DisplayClass9.<method_play_tracks>b__8(Result`1 res)
           Roon.Client.BrooModels.DLL, IL 0, N 19
       Sooloos.Concurrency.Version.DispatchPostHandlers(Object o)
           Roon.Broker.Concurrency.DLL, IL 56, N 127
       Sooloos.Concurrency.SharedState`1.FlushEvents()
           Roon.Broker.Concurrency.DLL, IL 84, N 270
       Sooloos.Broker.State.BeginAccess(List`1 out_mutated_objects)
           Roon.Broker.Core.DLL, IL 40, N 113
       Broo.Engine.DeviceTarget.GuiMainLoop()
           BrooEngine.DLL, IL 159, N 603
       Sooloos.Application.Main(String[] argv)
           Roon.exe, IL 1714, N 3880

    01/30 22:30:13 Error: 
     Failed to write managed crash to disk: System.IO.IOException: The process cannot access the file 'C:\Users\bartv\AppData\Local\Temp\managedcrash_636214122137667404.tgz' because it is being used by another process.
       at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
       at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
       at Sooloos.Support.ManagedCrash.LogCrash(String crashdir, ExceptionInfo ei, Int32 maxkeep)
       at Sooloos.Support.Manager._CaughtUnhandledException(ExceptionInfo ei)

I really think u should set the HD’s not to sleep…

I’m also in the camp of never letting the drives spin down and up and down…let them run

And your opinion on putting HDDs to sleep or not is relevant to this issue how? Putting disks to sleep is a valid scenario. The application sometimes crashes. It shouldn’t.

Very interesting. I also use this feature in my old piece of junk Thecus NAS. In my situation, Roon will just wait for a while until the music starts to stream from the NAS. I’ve never had Roon crash or pause. I’ve never timed it but it seems Roon waits for up to 15-20 secs sometimes before I hear music. I will time it later today.

Are you seeing a longer delay than 20 secs before Roon crashes or pauses the music? I wonder if perhaps there is some internal timer in Roon? If so, it would be good if there was some error message.

Well wiseguy ur system will work faster and ur drive will last longer relevant enough for u??

I’ll verify how long it takes them to wake them.

I appreciate your concern about the well being of my hard drives. It’s good to know there is someone who stands up / fights for all HDDs alike. I promise I’ll take good care of them. Now if you could only contribute to solving the actual crash instead of working around it, not only my hard drives, but I as well will be very grateful.

This time the remote disconnected after 15 seconds, after reconnecting the track was paused.

Flagging @support

Strange. This seems to be solved with 1.3