After a while, my server does nothing and yet uses 1 CPU core

Hello,

I’ve been observing something strange with one of my RO based server where, after a few days, it eats up one CPU core while it has nothing to do, no clients are there.
Using Process Explorer, I can see that it’s thread $1860 that eats up the CPU core and taking a dump of all threads with madExcept, I get this:

main thread ($1964):
73f3355a +0ea KERNELBASE.dll                 WaitForMultipleObjectsEx
746e8873 +063 user32.dll                     MsgWaitForMultipleObjects
0053e147 +06f MyServer.exe  System.Classes  TThread.WaitFor
0053d32a +046 MyServer.exe  System.Classes  TThread.Destroy
0040a144 +008 MyServer.exe  System          TObject.Free
00669de9 +211 MyServer.exe  Vcl.SvcMgr      TServiceApplication.Run
0066a783 +007 MyServer.exe  uROComboService TROService.Run
00bf92d4 +0d8 MyServer.exe  MyServer       initialization
745162c2 +022 KERNEL32.DLL                   BaseThreadInitThunk

thread $bb4 (TROThreadTimer):
73f3355a +0ea KERNELBASE.dll                        WaitForMultipleObjectsEx
008de405 +0d9 MyServer.exe  uIPAsyncSocket         TIPBaseAsyncSocket.BeginSend
00410390 +010 MyServer.exe  System                 @IntfClear
0040dc4c +0e4 MyServer.exe  System                 @FinalizeArray
0040db3c +024 MyServer.exe  System                 @FinalizeRecord
00410390 +010 MyServer.exe  System                 @IntfClear
008d549e +1ae MyServer.exe  uROBaseSuperHttpServer TROBaseSuperHTTPServer.cbCleanup
0059bae6 +056 MyServer.exe  System.SyncObjs        THandleObject.WaitFor
006e3545 +00d MyServer.exe  uROThreadTimer         TROThreadTimer.IntExecute
006e2f4b +07f MyServer.exe  uROInitializedThread   TROInitializedThread.Execute
004b02f3 +02b MyServer.exe  madExcept              HookedTThreadExecute
0053d129 +049 MyServer.exe  System.Classes         ThreadProc
0040beac +028 MyServer.exe  System                 ThreadWrapper
004b01d9 +00d MyServer.exe  madExcept              CallThreadProcSafe
004b023e +032 MyServer.exe  madExcept              ThreadExceptFrame
745162c2 +022 KERNEL32.DLL                          BaseThreadInitThunk
>> created by main thread ($1964) at:
006e2eac +020 MyServer.exe  uROInitializedThread   TROInitializedThread.Create

thread $12fc (TIPSocketWorkerThread):
76b4497c +0bc ws2_32.dll                         select
008df9fa +23a MyServer.exe uIPAsyncSocket       TIPSocketWorkerThread.IntExecute
006e2f4b +07f MyServer.exe uROInitializedThread TROInitializedThread.Execute
004b02f3 +02b MyServer.exe madExcept            HookedTThreadExecute
0053d129 +049 MyServer.exe System.Classes       ThreadProc
0040beac +028 MyServer.exe System               ThreadWrapper
004b01d9 +00d MyServer.exe madExcept            CallThreadProcSafe
004b023e +032 MyServer.exe madExcept            ThreadExceptFrame
745162c2 +022 KERNEL32.DLL                       BaseThreadInitThunk
>> created by main thread ($1964) at:
006e2eac +020 MyServer.exe uROInitializedThread TROInitializedThread.Create

thread $158c (TIdUDPListenerThread):
76b4497c +bc ws2_32.dll                   select
008423ba +4a MyServer.exe IdStackWindows TIdSocketListWindows.FDSelect
00842358 +20 MyServer.exe IdStackWindows TIdSocketListWindows.SelectRead
00849cea +06 MyServer.exe IdSocketHandle TIdSocketHandle.Select
0089b3ef +2b MyServer.exe IdUDPServer    TIdUDPListenerThread.Run
0085f0cd +f5 MyServer.exe IdThread       TIdThread.Execute
004b02f3 +2b MyServer.exe madExcept      HookedTThreadExecute
0053d129 +49 MyServer.exe System.Classes ThreadProc
0040beac +28 MyServer.exe System         ThreadWrapper
004b01d9 +0d MyServer.exe madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                 BaseThreadInitThunk
>> created by main thread ($1964) at:
0085f2ce +52 MyServer.exe IdThread       TIdThread.Create

thread $1530 (TIdUDPListenerThread):
76b4497c +bc ws2_32.dll                   select
008423ba +4a MyServer.exe IdStackWindows TIdSocketListWindows.FDSelect
00842358 +20 MyServer.exe IdStackWindows TIdSocketListWindows.SelectRead
00849cea +06 MyServer.exe IdSocketHandle TIdSocketHandle.Select
0089b3ef +2b MyServer.exe IdUDPServer    TIdUDPListenerThread.Run
0085f0cd +f5 MyServer.exe IdThread       TIdThread.Execute
004b02f3 +2b MyServer.exe madExcept      HookedTThreadExecute
0053d129 +49 MyServer.exe System.Classes ThreadProc
0040beac +28 MyServer.exe System         ThreadWrapper
004b01d9 +0d MyServer.exe madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                 BaseThreadInitThunk
>> created by main thread ($1964) at:
0085f2ce +52 MyServer.exe IdThread       TIdThread.Create

thread $7a4 (TServiceStartThread):
73f25e83 +93 KERNELBASE.dll                WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                WaitForSingleObject
73cca0a7 +57 sechost.dll                   StartServiceCtrlDispatcherW
00669bbb +07 MyServer.exe  Vcl.SvcMgr     TServiceStartThread.Execute
004b02f3 +2b MyServer.exe  madExcept      HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes ThreadProc
0040beac +28 MyServer.exe  System         ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                  BaseThreadInitThunk
>> created by main thread ($1964) at:
00669b50 +54 MyServer.exe  Vcl.SvcMgr     TServiceStartThread.Create

thread $1644:
73f25e83 +93 KERNELBASE.dll                WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                WaitForSingleObject
0053e174 +9c MyServer.exe  System.Classes TThread.WaitFor
00668ed1 +75 MyServer.exe  Vcl.SvcMgr     TService.DoStart
00668dfd +95 MyServer.exe  Vcl.SvcMgr     TService.Main
00669307 +83 MyServer.exe  Vcl.SvcMgr     TServiceApplication.DispatchServiceMain
00669112 +0e MyServer.exe  Vcl.SvcMgr     ServiceMain
004b01d9 +0d MyServer.exe  madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                  BaseThreadInitThunk
>> created by thread $7a4 (TServiceStartThread) at:
73cdce41 +00 sechost.dll

thread $19b0 (TServiceThread):
746fa746 +26 user32.dll                   GetMessageW
00668618 +48 MyServer.exe Vcl.SvcMgr     TServiceThread.ProcessRequests
00668495 +f1 MyServer.exe Vcl.SvcMgr     TServiceThread.Execute
004b02f3 +2b MyServer.exe madExcept      HookedTThreadExecute
0053d129 +49 MyServer.exe System.Classes ThreadProc
0040beac +28 MyServer.exe System         ThreadWrapper
004b01d9 +0d MyServer.exe madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                 BaseThreadInitThunk
>> created by thread $1644 at:
00668383 +1b MyServer.exe Vcl.SvcMgr     TServiceThread.Create

thread $7a0 (TIPSocketWorkerThread):
73f3355a +0ea KERNELBASE.dll                      WaitForMultipleObjectsEx
0059bae6 +056 MyServer.exe  System.SyncObjs      THandleObject.WaitFor
008df9ca +20a MyServer.exe  uIPAsyncSocket       TIPSocketWorkerThread.IntExecute
006e2f4b +07f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +02b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +049 MyServer.exe  System.Classes       ThreadProc
0040beac +028 MyServer.exe  System               ThreadWrapper
004b01d9 +00d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +032 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +022 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $12fc (TIPSocketWorkerThread) at:
006e2eac +020 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $b40 (TROPooledThread):
73f25e83 +93 KERNELBASE.dll                      WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                      WaitForSingleObject
008cebc7 +0b MyServer.exe  uROThreadPool        TROSemaphore.WaitFor
008ce58c +38 MyServer.exe  uROThreadPool        TROPooledThread.IntExecute
006e2f4b +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $12fc (TIPSocketWorkerThread) at:
006e2eac +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $12a0 (TROThreadTimer):
73f3355a +ea KERNELBASE.dll                      WaitForMultipleObjectsEx
00410390 +10 MyServer.exe  System               @IntfClear
007d7fd5 +71 MyServer.exe  uROSessions          TROCustomSessionManager.DoNotifySessionsChangesListener
0040a81d +1d MyServer.exe  System               @AfterConstruction
004affb5 +19 MyServer.exe  madExcept            InterceptClassDestroy
0040a135 +09 MyServer.exe  System               TObject.Destroy
007d83b2 +7a MyServer.exe  uROSessions          TROInMemorySessionManager.DoClearSessions
007d739a +5a MyServer.exe  uROSessions          TROCustomSessionManager.ClearSessions
0059bae6 +56 MyServer.exe  System.SyncObjs      THandleObject.WaitFor
006e3545 +0d MyServer.exe  uROThreadTimer       TROThreadTimer.IntExecute
006e2f4b +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $b40 (TROPooledThread) at:
006e2eac +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $19e4 (TROPooledThread):
73f25e83 +93 KERNELBASE.dll                      WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                      WaitForSingleObject
008cebc7 +0b MyServer.exe  uROThreadPool        TROSemaphore.WaitFor
008ce58c +38 MyServer.exe  uROThreadPool        TROPooledThread.IntExecute
006e2f4b +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $12fc (TIPSocketWorkerThread) at:
006e2eac +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $15fc (TROPooledThread):
73f25e83 +93 KERNELBASE.dll                      WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                      WaitForSingleObject
008cebc7 +0b MyServer.exe  uROThreadPool        TROSemaphore.WaitFor
008ce58c +38 MyServer.exe  uROThreadPool        TROPooledThread.IntExecute
006e2f4b +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $7a0 (TIPSocketWorkerThread) at:
006e2eac +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $1674 (TROPooledThread):
73f25e83 +93 KERNELBASE.dll                      WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                      WaitForSingleObject
008cebc7 +0b MyServer.exe  uROThreadPool        TROSemaphore.WaitFor
008ce58c +38 MyServer.exe  uROThreadPool        TROPooledThread.IntExecute
006e2f4b +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $12fc (TIPSocketWorkerThread) at:
006e2eac +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $1404 (TROPooledThread):
73f25e83 +93 KERNELBASE.dll                      WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                      WaitForSingleObject
008cebc7 +0b MyServer.exe  uROThreadPool        TROSemaphore.WaitFor
008ce58c +38 MyServer.exe  uROThreadPool        TROPooledThread.IntExecute
006e2f4b +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $12fc (TIPSocketWorkerThread) at:
006e2eac +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $12c4 (TROPooledThread):
73f25e83 +93 KERNELBASE.dll                      WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                      WaitForSingleObject
008cebc7 +0b MyServer.exe  uROThreadPool        TROSemaphore.WaitFor
008ce58c +38 MyServer.exe  uROThreadPool        TROPooledThread.IntExecute
006e2f4b +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $12fc (TIPSocketWorkerThread) at:
006e2eac +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $1860 (TIPSocketWorkerThread):
0059bdec +04 MyServer.exe System.SyncObjs      TEvent.ResetEvent
006e2f4b +7f MyServer.exe uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe System.Classes       ThreadProc
0040beac +28 MyServer.exe System               ThreadWrapper
004b01d9 +0d MyServer.exe madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                       BaseThreadInitThunk
>> created by thread $12fc (TIPSocketWorkerThread) at:
006e2eac +20 MyServer.exe uROInitializedThread TROInitializedThread.Create

thread $18f4:
745162c2 +22 KERNEL32.DLL  BaseThreadInitThunk

thread $1554:
745162c2 +22 KERNEL32.DLL  BaseThreadInitThunk

Repeating the snapshot, I always get the same result, so it seems as if the $1860 thread is stuck inside some loop invoking TEvent.ResetEvent continuously.

If I restart the service, the CPU usage goes back to 0% for a few days, and the same snapshot gives this:

main thread ($1f70):
0065e829 +149 MyServer.exe Vcl.Forms       TApplication.Idle
0065da4f +017 MyServer.exe Vcl.Forms       TApplication.HandleMessage
00669d5b +183 MyServer.exe Vcl.SvcMgr      TServiceApplication.Run
0066a783 +007 MyServer.exe uROComboService TROService.Run
00bfa31c +0d8 MyServer.exe MyServer       initialization
745162c2 +022 KERNEL32.DLL                  BaseThreadInitThunk

thread $3b8:
745162c2 +22 KERNEL32.DLL  BaseThreadInitThunk

thread $bdc:
745162c2 +22 KERNEL32.DLL  BaseThreadInitThunk

thread $1eb8:
745162c2 +22 KERNEL32.DLL  BaseThreadInitThunk

thread $de8 (TROThreadTimer):
73f3355a +ea KERNELBASE.dll                      WaitForMultipleObjectsEx
0059bae6 +56 MyServer.exe  System.SyncObjs      THandleObject.WaitFor
006e3569 +0d MyServer.exe  uROThreadTimer       TROThreadTimer.IntExecute
006e2f6f +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by main thread ($1f70) at:
006e2ed0 +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $1128 (TIPSocketWorkerThread):
76b4497c +0bc ws2_32.dll                         select
008dfa1e +23a MyServer.exe uIPAsyncSocket       TIPSocketWorkerThread.IntExecute
006e2f6f +07f MyServer.exe uROInitializedThread TROInitializedThread.Execute
004b02f3 +02b MyServer.exe madExcept            HookedTThreadExecute
0053d129 +049 MyServer.exe System.Classes       ThreadProc
0040beac +028 MyServer.exe System               ThreadWrapper
004b01d9 +00d MyServer.exe madExcept            CallThreadProcSafe
004b023e +032 MyServer.exe madExcept            ThreadExceptFrame
745162c2 +022 KERNEL32.DLL                       BaseThreadInitThunk
>> created by main thread ($1f70) at:
006e2ed0 +020 MyServer.exe uROInitializedThread TROInitializedThread.Create

thread $1db8 (TIdUDPListenerThread):
76b4497c +bc ws2_32.dll                   select
00835783 +cb MyServer.exe IdWinsock2     Stub_select
008423de +4a MyServer.exe IdStackWindows TIdSocketListWindows.FDSelect
0084237c +20 MyServer.exe IdStackWindows TIdSocketListWindows.SelectRead
00849d0e +06 MyServer.exe IdSocketHandle TIdSocketHandle.Select
0089b413 +2b MyServer.exe IdUDPServer    TIdUDPListenerThread.Run
0085f0f1 +f5 MyServer.exe IdThread       TIdThread.Execute
004b02f3 +2b MyServer.exe madExcept      HookedTThreadExecute
0053d129 +49 MyServer.exe System.Classes ThreadProc
0040beac +28 MyServer.exe System         ThreadWrapper
004b01d9 +0d MyServer.exe madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                 BaseThreadInitThunk
>> created by main thread ($1f70) at:
0085f2f2 +52 MyServer.exe IdThread       TIdThread.Create

thread $708 (TIdUDPListenerThread):
76b4497c +bc ws2_32.dll                   select
008423de +4a MyServer.exe IdStackWindows TIdSocketListWindows.FDSelect
0084237c +20 MyServer.exe IdStackWindows TIdSocketListWindows.SelectRead
00849d0e +06 MyServer.exe IdSocketHandle TIdSocketHandle.Select
0089b413 +2b MyServer.exe IdUDPServer    TIdUDPListenerThread.Run
0085f0f1 +f5 MyServer.exe IdThread       TIdThread.Execute
004b02f3 +2b MyServer.exe madExcept      HookedTThreadExecute
0053d129 +49 MyServer.exe System.Classes ThreadProc
0040beac +28 MyServer.exe System         ThreadWrapper
004b01d9 +0d MyServer.exe madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                 BaseThreadInitThunk
>> created by main thread ($1f70) at:
0085f2f2 +52 MyServer.exe IdThread       TIdThread.Create

thread $50 (TServiceStartThread):
73f25e83 +93 KERNELBASE.dll                WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                WaitForSingleObject
73cca0a7 +57 sechost.dll                   StartServiceCtrlDispatcherW
00669bbb +07 MyServer.exe  Vcl.SvcMgr     TServiceStartThread.Execute
004b02f3 +2b MyServer.exe  madExcept      HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes ThreadProc
0040beac +28 MyServer.exe  System         ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                  BaseThreadInitThunk
>> created by main thread ($1f70) at:
00669b50 +54 MyServer.exe  Vcl.SvcMgr     TServiceStartThread.Create

thread $147c:
73f25e83 +93 KERNELBASE.dll                WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                WaitForSingleObject
0053e174 +9c MyServer.exe  System.Classes TThread.WaitFor
00668ed1 +75 MyServer.exe  Vcl.SvcMgr     TService.DoStart
00668dfd +95 MyServer.exe  Vcl.SvcMgr     TService.Main
00669307 +83 MyServer.exe  Vcl.SvcMgr     TServiceApplication.DispatchServiceMain
00669112 +0e MyServer.exe  Vcl.SvcMgr     ServiceMain
004b01d9 +0d MyServer.exe  madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                  BaseThreadInitThunk
>> created by thread $50 (TServiceStartThread) at:
73cdce41 +00 sechost.dll

thread $1b8c (TServiceThread):
746fa746 +26 user32.dll                   GetMessageW
00668618 +48 MyServer.exe Vcl.SvcMgr     TServiceThread.ProcessRequests
00668495 +f1 MyServer.exe Vcl.SvcMgr     TServiceThread.Execute
004b02f3 +2b MyServer.exe madExcept      HookedTThreadExecute
0053d129 +49 MyServer.exe System.Classes ThreadProc
0040beac +28 MyServer.exe System         ThreadWrapper
004b01d9 +0d MyServer.exe madExcept      CallThreadProcSafe
004b023e +32 MyServer.exe madExcept      ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                 BaseThreadInitThunk
>> created by thread $147c at:
00668383 +1b MyServer.exe Vcl.SvcMgr     TServiceThread.Create

thread $1ea8 (TROPooledThread):
73f25e83 +93 KERNELBASE.dll                      WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                      WaitForSingleObject
008cebeb +0b MyServer.exe  uROThreadPool        TROSemaphore.WaitFor
008ce5b0 +38 MyServer.exe  uROThreadPool        TROPooledThread.IntExecute
006e2f6f +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $1128 (TIPSocketWorkerThread) at:
006e2ed0 +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $1e8 (TROThreadTimer):
73f3355a +ea KERNELBASE.dll                      WaitForMultipleObjectsEx
0059bae6 +56 MyServer.exe  System.SyncObjs      THandleObject.WaitFor
006e3569 +0d MyServer.exe  uROThreadTimer       TROThreadTimer.IntExecute
006e2f6f +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $1ea8 (TROPooledThread) at:
006e2ed0 +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

thread $1ebc (TROPooledThread):
73f25e83 +93 KERNELBASE.dll                      WaitForSingleObjectEx
73f25ddd +0d KERNELBASE.dll                      WaitForSingleObject
008cebeb +0b MyServer.exe  uROThreadPool        TROSemaphore.WaitFor
008ce5b0 +38 MyServer.exe  uROThreadPool        TROPooledThread.IntExecute
006e2f6f +7f MyServer.exe  uROInitializedThread TROInitializedThread.Execute
004b02f3 +2b MyServer.exe  madExcept            HookedTThreadExecute
0053d129 +49 MyServer.exe  System.Classes       ThreadProc
0040beac +28 MyServer.exe  System               ThreadWrapper
004b01d9 +0d MyServer.exe  madExcept            CallThreadProcSafe
004b023e +32 MyServer.exe  madExcept            ThreadExceptFrame
745162c2 +22 KERNEL32.DLL                        BaseThreadInitThunk
>> created by thread $1128 (TIPSocketWorkerThread) at:
006e2ed0 +20 MyServer.exe  uROInitializedThread TROInitializedThread.Create

In this case, all threads are doing nothing but wait for external events to occur.
Is this something that you have already seen?
What should I be trying, looking at to pinpoint the origin of this issue?

A few technical details:

ROSDK 9.4 (yeah, I know, an update is long overdue)
ROBroadcastServer + RODiscoveryServer
ROIpSuperHTTPServer
BinMessage
AESEnveloppe
Windows 2016 x64 build 14393

Any pointers are most welcome.

My first pointer, TBH, would indeed be to update :wink:

Yes, it’s on the table, but I would really like to have a firm understanding as to why this “lock up” happens before doing the update. There are always rough edges when doing an update.

Hi,

it could be some issue with synapse superhttp server and how it works with sockets.
in v10 we created servers (http, superhttp, tcp, supertcp) w/o using 3rd party libraries like indy/synapse. they may work more stable in some scenarios.

can you test your project with ROD v10?