team-unstablers / ulalaca

xrdp-powered remote session broker / projector for macOS
Apache License 2.0
57 stars 1 forks source link

sessionprojector.app crashes when disk running out of space #23

Open unstabler opened 10 months ago

unstabler commented 10 months ago

ENVIRONMENT

SUMMARY

// Thread 34 Queue : com.apple.NSXPCConnection.m-user.com.apple.replayd (serial)
// #2   0x0000000100e01e7c in SCScreenRecorder.stream(_:didStopWithError:) at /Users/cheesekun/works/ulalaca/sessionprojector/sessionprojector/recorder/SCScreenRecorder.swift:217

extension SCScreenRecorder: SCStreamDelegate {
    public func stream(_ stream: SCStream, didStopWithError error: Error) {
        logger.error("didStopWithError: \(error.localizedDescription)")
        //                                ^^^^^ Thread 34: EXC_BAD_ACCESS (code=1, address=0x0)

        delegateQueue.async {
            self.delegate?.screenRecorder(didStopWithError: error)
        }
    }
}
; Thread 34 Queue : com.apple.NSXPCConnection.m-user.com.apple.replayd (serial)
; #4    0x00000001f28f71f0 in -[SCStreamManager stream:didStopWithError:] ()

    0x1f28f71d4 <+428>: bl     0x1f291cb80               ; objc_msgSend$delegate
    0x1f28f71d8 <+432>: mov    x29, x29
    0x1f28f71dc <+436>: bl     0x1f290a5f8               ; symbol stub for: objc_retainAutoreleasedReturnValue
    0x1f28f71e0 <+440>: mov    x21, x0
    0x1f28f71e4 <+444>: mov    x2, x22
    0x1f28f71e8 <+448>: mov    x3, x20
    0x1f28f71ec <+452>: bl     0x1f291fa80               ; objc_msgSend$stream:didStopWithError:
->  0x1f28f71f0 <+456>: mov    x0, x21
    0x1f28f71f4 <+460>: bl     0x1f290a5b8               ; symbol stub for: objc_release
    0x1f28f71f8 <+464>: b      0x1f28f7218               ; <+496>
    0x1f28f71fc <+468>: cmp    w8, #0x2
    0x1f28f7200 <+472>: b.hi   0x1f28f7218               ; <+496>

(lldb) register read --all
General Purpose Registers:
       x19 = 0x00006000007039c0
       x20 = 0x0000000000000000 ; <-- ???????????????????????????
       x21 = 0x00006000020c78d0
       x22 = 0x0000600002ec0700
       x23 = 0x0000000000000001
       x24 = 0x0000000000000001
       x25 = 0x0000000000000000
       x26 = 0x0000600002dc0000
       x27 = 0x0000000000000001
       x28 = 0x000060000076eb40
        fp = 0x000000016f0c1f60
        sp = 0x000000016f0c1ef0
        pc = 0x00000001f28f71f0  ScreenCaptureKit`-[SCStreamManager stream:didStopWithError:] + 456
       w19 = 0x007039c0
       w20 = 0x00000000
48 registers were unavailable.

어떻게 해야 하지

unstabler commented 10 months ago

결론

default 04:25:13.294591+0900    deleted [0x157759840] activating connection: mach=true listener=false peer=false name=com.apple.replayd-cache-delete
default 04:25:13.295043+0900    replayd [0x126065bc0] activating connection: mach=false listener=false peer=true name=com.apple.replayd-cache-delete.peer.0x126065bc0
default 04:25:13.295308+0900    replayd servicePurge QOS: 17
default 04:25:13.295357+0900    replayd  [INFO] -[RPRecordingManager volumeMatchesCachePath:]:231 _mountOnName=<private>, volume=<private>, match=1
default 04:25:13.295587+0900    replayd  [INFO] -[RPRecordingManager purge:urgency:]:253 cacheDeleteUrgencyHigh
default 04:25:13.295732+0900    replayd  [INFO] -[RPClient handleMemoryWarningForCurrentActiveSession]:905
default 04:25:13.295762+0900    replayd  [INFO] -[RPClient handleMemoryWarningForCurrentActiveSession]:930 We don't have a current active session.
default 04:25:13.296358+0900    replayd  [INFO] -[RPClient stopAllStreamsWithError:]:1224
default 04:25:13.296392+0900    replayd  [INFO] -[RPClient notifyManagerCallBack:forStreamID:withContentFilter:withStreamConfig:]:1041 control center client <private> managerStream=3
default 04:25:13.296425+0900    replayd  [INFO] -[RPClientProxy purgePickersForApplicationBundleID:]:228
default 04:25:13.296648+0900    replayd  [INFO] -[RPClient stopAllStreamsWithError:]:1224
default 04:25:13.296674+0900    replayd  [INFO] -[SCCaptureSession stopAndInvalidateWithStreamData:completionHandler:]:771 session=0x126141560 streamID=<private>
default 04:25:13.296827+0900    ControlCenter    [INFO] -[RPDaemonProxy purgePickersForApplicationBundleID:]:1175
default 04:25:13.296782+0900    replayd  [INFO] SCRemoteQueue_StopSenderQueue:244 streamID=<private> remoteQueue=0x126109660
default 04:25:13.296839+0900    replayd  [INFO] SCRemoteQueue_StopSenderQueue:244 streamID=<private> remoteQueue=0x126309c70
default 04:25:13.296971+0900    ControlCenter    [INFO] -[SCControlCenterManager updatePickersWithType:config:bundleID:]_block_invoke:661 didMatch 0 with type 5 and object (null)
default 04:25:13.296931+0900    replayd  [INFO] -[SCScreenCaptureSession stopWithError:]:179 0x126512b30: streamID=<private>
default 04:25:13.296973+0900    replayd -[SLContentStream stop:]: self = 0x12650a190
default 04:25:13.297142+0900    sessionprojector-debug   [INFO] -[RPDaemonProxy stopRemoteQueue:type:]:1111
default 04:25:13.297250+0900    sessionprojector-debug   [INFO] -[SCStreamManager stopRemoteQueue:type:]:96 0x6000028b8ec0 streamId=B1E39CEB-3B4F-49A7-954B-4E4BFEC36135
default 04:25:13.297296+0900    sessionprojector-debug   [INFO] SCRemoteQueue_Destroy:257 remoteQueue=0x6000025cc210
default 04:25:13.297466+0900    replayd  [INFO] SCCaptureSession_frameHandler:1261 Content stream frame status stopped for session=0x126141560 streamID=<private>
default 04:25:13.298187+0900    sessionprojector-debug   [INFO] -[RPDaemonProxy stopRemoteQueue:type:]:1111
default 04:25:13.298193+0900    NotificationCenter  Performing scheduled flush of powerlog view entries
default 04:25:13.298261+0900    sessionprojector-debug   [INFO] -[SCStreamManager stopRemoteQueue:type:]:96 0x6000028b8ec0 streamId=B1E39CEB-3B4F-49A7-954B-4E4BFEC36135
default 04:25:13.298261+0900    NotificationCenter  No powerlog view entries to flush.
default 04:25:13.298324+0900    sessionprojector-debug   [INFO] SCRemoteQueue_Destroy:257 remoteQueue=0x6000025f2820
default 04:25:13.298671+0900    replayd  [INFO] +[RPReportingAgent sendReportEventWithType:dictionary:withServiceName:clientBundleId:sessionID:]:105 reported eventType:1
default 04:25:13.298729+0900    replayd  [INFO] -[SCScreenCaptureSession dealloc]:185 self=0x126512b30
default 04:25:13.298757+0900    replayd -[SLContentStream dealloc]: self = 0x12650a190
default 04:25:13.298856+0900    WindowServer    Dead sharing context E38B7F09-9D21-4993-B554-67081C217B84
default 04:25:13.298875+0900    WindowServer    Ending sharing context E38B7F09-9D21-4993-B554-67081C217B84
default 04:25:13.299345+0900    replayd -[SLContentFilter dealloc]: self = 0x12650b900
default 04:25:13.299420+0900    replayd  [INFO] -[RPClient stopAllStreamsWithError:]_block_invoke:1235 Stopped stream=<private>
default 04:25:13.299463+0900    replayd  [INFO] -[RPClientProxy stream:didStopWithError:]:164
default 04:25:13.299591+0900    replayd  [INFO] -[RPClient notifyManagerCallBack:forStreamID:withContentFilter:withStreamConfig:]:1041 control center client <private> managerStream=2
default 04:25:13.299622+0900    replayd  [INFO] -[RPClientProxy streamDidStopWithConfiguration:contentFilter:]:196
default 04:25:13.299709+0900    sessionprojector-debug   [INFO] -[RPDaemonProxy stream:didStopWithError:]:1119
default 04:25:13.299860+0900    replayd  [INFO] -[SCCaptureSession dealloc]:236 session=0x126141560
default 04:25:13.299776+0900    sessionprojector-debug   [INFO] -[SCStreamManager stream:didStopWithError:]:101 0x6000028b8ec0 didStopWithError=(null) for streamID=B1E39CEB-3B4F-49A7-954B-4E4BFEC36135

Screenshot 2023-10-27 at 4 37 03 AM