Crash when deallocating an unused DispatchSourceTimer

Number:rdar://40269002 Date Originated:15-May-2018 04:41 PM
Status:Open Resolved:
Product:macOS + SDK Product Version:Xcode 9.3.1 (9E501) on macOS 10.13.4 (17E202)
Classification:Crash/Hang/Data Loss Reproducible:Always
Deallocating an unused DispatchSourceTimer results in a crash.

Steps to Reproduce:
$ cat TimerCrash.swift 
import Dispatch
_ = DispatchSource.makeTimerSource()
$ swift --version
Apple Swift version 4.1 (swiftlang-902.0.48 clang-902.0.37.1)
Target: x86_64-apple-darwin17.5.0
$ swift TimerCrash.swift 
0  swift                    0x0000000111766ffa PrintStackTraceSignalHandler(void*) + 42
1  swift                    0x00000001117663b6 SignalHandler(int) + 966
2  libsystem_platform.dylib 0x00007fff5dfd9f5a _sigtramp + 26
3  libsystem_platform.dylib 0x00007fffda67c4e6 _sigtramp + 2087331238
4  libsystem_platform.dylib 0x0000000115918058 _sigtramp + 3079921944
5  swift                    0x000000010eaa7c0a llvm::MCJIT::runFunction(llvm::Function*, llvm::ArrayRef<llvm::GenericValue>) + 362
6  swift                    0x000000010eaae30c llvm::ExecutionEngine::runFunctionAsMain(llvm::Function*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, char const* const*) + 1004
7  swift                    0x000000010ddc9735 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 48709
8  swift                    0x000000010ddbbe64 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 7908
9  swift                    0x000000010dd708b5 main + 18917
10 libdyld.dylib            0x00007fff5dccb015 start + 1
Stack dump:
0.	Program arguments: /Applications/ -frontend -interpret TimerCrash.swift -enable-objc-interop -sdk /Applications/ -color-diagnostics -module-name TimerCrash 
Illegal instruction: 4

Expected Results:
No crash.

Actual Results:

Xcode 9.3.1 (9E501) on macOS 10.13.4 (17E202)

Also reproduced with equivalent code in Objective-C, but it was more concise to reproduce it in Swift.


Oh, and this is a regression in Xcode 9.x. It does not crash in Xcode 8.3.

Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!