frame #6: 0x00000001000081bc SR15133`StreamCommandQueue.handleErrorCondition(stream=0x0000000100712b90, event=.errorOccurred, self=0x0000000100712e90) at StreamCommandQueue.swift:182:9
frame #7: 0x0000000100009040 SR15133`closure #3 in StreamCommandQueue.stream(self=0x0000000100712e90, aStream=0x0000000100712b90, eventCode=.errorOccurred) at StreamCommandQueue.swift:202:44
frame #8: 0x000000010000ac48 SR15133`partial apply for closure #3 in StreamCommandQueue.stream(_:handle🙂 at <compiler-generated>:0
frame #9: 0x0000000100005d5c SR15133`thunk for @escaping @callee_guaranteed @sendable@async () -> () at <compiler-generated>:0
frame #10: 0x000000010000ad9c SR15133`thunk for @escaping @callee_guaranteed @sendable@async () -> ()partial apply at <compiler-generated>:0
frame #11: 0x000000010000bfac SR15133`thunk for @escaping @callee_guaranteed @sendable@async () -> (@out A) at <compiler-generated>:0
frame #12: 0x000000010000cc5c SR15133`partial apply for thunk for @escaping @callee_guaranteed @sendable@async () -> (@out A) at <compiler-generated>:0
(lldb)
I suspect there is a memory management problem when the stored continuation in the `StreamCommand` gets deallocated due to `self.activeCommand = nil` while the continuation may continue to run in another task.
The text was updated successfully, but these errors were encountered:
After digging deeper, it seems that the actual crash happens when deallocating the `DispatchTimerSource`. Obviously `libdispatch` is to blame here and it has nothing to do with the continuation. I will adjust the metadata accordingly.
Environment
macOS 12 beta, Xcode 13 (13A233).
Additional Detail from JIRA
md5: 61e077b082169a945b058843ee5c3245
Issue Description:
Please consider the following example program which I have uploaded to
https://github.com/mickeyl/swift-bugs/tree/main/SR15133
Running it from within Xcode crashes with the following backtrace:
(lldb) bt
thread #3, queue = 'com.apple.root.default-qos.cooperative', stop reason = EXC_BREAKPOINT (code=1, subcode=0x100624d9c)
frame #0: 0x0000000100624d9c libdispatch.dylib`_dispatch_queue_xref_dispose.cold.2 + 36
frame #1: 0x00000001005ea2ec libdispatch.dylib`_dispatch_queue_xref_dispose + 64
frame #2: 0x00000001005e17f8 libdispatch.dylib`-[OS_dispatch_source _xref_dispose] + 28
frame #3: 0x00000001000060f8 SR15133`StreamCommand.deinit(self=0x0000000105105820) at StreamCommandQueue.swift:0
frame #4: 0x0000000100006120 SR15133`StreamCommand.__deallocating_deinit(self=0x0000000105105820) at StreamCommandQueue.swift:0
frame #5: 0x00000001a2f6b774 libswiftCore.dylib`_swift_release_dealloc + 56
frame #6: 0x00000001000081bc SR15133`StreamCommandQueue.handleErrorCondition(stream=0x0000000100712b90, event=.errorOccurred, self=0x0000000100712e90) at StreamCommandQueue.swift:182:9🙂 at <compiler-generated>:0
frame #7: 0x0000000100009040 SR15133`closure #3 in StreamCommandQueue.stream(self=0x0000000100712e90, aStream=0x0000000100712b90, eventCode=.errorOccurred) at StreamCommandQueue.swift:202:44
frame #8: 0x000000010000ac48 SR15133`partial apply for closure #3 in StreamCommandQueue.stream(_:handle
frame #9: 0x0000000100005d5c SR15133`thunk for @escaping @callee_guaranteed @sendable @async () -> () at <compiler-generated>:0
frame #10: 0x000000010000ad9c SR15133`thunk for @escaping @callee_guaranteed @sendable @async () -> ()partial apply at <compiler-generated>:0
frame #11: 0x000000010000bfac SR15133`thunk for @escaping @callee_guaranteed @sendable @async () -> (@out A) at <compiler-generated>:0
frame #12: 0x000000010000cc5c SR15133`partial apply for thunk for @escaping @callee_guaranteed @sendable @async () -> (@out A) at <compiler-generated>:0
(lldb)
I suspect there is a memory management problem when the stored continuation in the `StreamCommand` gets deallocated due to `self.activeCommand = nil` while the continuation may continue to run in another task.
The text was updated successfully, but these errors were encountered: