[swift-users] Illegal Instruction: 4 OS X libdispatch

Tyler Fleming Cloutier cloutiertyler at aol.com
Sun May 1 13:33:04 CDT 2016


Hi everyone,

I’m creating a Swift package that uses Dispatch on OS X, but I am getting an Illegal Instruction error after I register my block for an event. Specifically, a UD2 instruction inside of libdispatch:

Process 16425 stopped
* thread #1: tid = 0x68d099, 0x00007fff814aa360 libdispatch.dylib`_dispatch_xref_dispose + 23, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
    frame #0: 0x00007fff814aa360 libdispatch.dylib`_dispatch_xref_dispose + 23
libdispatch.dylib`_dispatch_xref_dispose:
->  0x7fff814aa360 <+23>: ud2    


Does this look like a compiler error, or have I somehow configured my package wrong? I haven’t used any funky compiler flags. I do know that if I set my min version to 10.7 or 10.6 I do not get the error. This is the offending function:

public func listen(backlog: Int = 32, onConnect: (clientConnection: TCPServer) -> ()) throws {
        let ret = system_listen(fd.rawValue, Int32(backlog))
        if ret != 0 {
            throw Error(rawValue: errno)
        }
        let dispatchSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, UInt(fd.rawValue), 0, dispatch_get_main_queue())
//        dispatch_source_cancel(dispatchSource)
//        dispatch_resume(dispatchSource)
        dispatch_source_set_event_handler(dispatchSource) { [fd = self.fd] in
            var socketAddress = sockaddr()
            var sockLen = socklen_t(SOCK_MAXADDRLEN)
            
            let ret = system_accept(fd.rawValue, &socketAddress, &sockLen)
            if ret == StandardFileDescriptor.invalid.rawValue {
                fatalError()
            }
            let clientFileDescriptor = SocketFileDescriptor(rawValue: ret, socketType: SocketType.stream, addressFamily: fd.addressFamily)
            let clientConnection = TCPServer(loop: self.loop, fd: clientFileDescriptor)
            onConnect(clientConnection: clientConnection)
        }
    }

If it is a bug, where should I file it? Any help would be much appreciated!

Thanks,

Tyler
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160501/aa4d0e7a/attachment.html>


More information about the swift-users mailing list