Skip to content

Segmentation faults when using SwiftyJSON as a subproject #67

Closed

Description

@Noobish1

If you add SwiftyJSON by dragging in the SwiftyJSON.xcodeproj then linking the framework and add a class like the following:

import SwiftyJSON

class Object {
func method(json: JSON) {
}
}

You'll get a segmentation fault

Activity

  1. changed the title [-]Segmentation faults when using SwiftyJSON as a subpri[/-] [+]Segmentation faults when using SwiftyJSON as a subproject[/+] on Oct 9, 2014
  2. drhr commented on Oct 13, 2014

    @drhr

    I'm seeing this as well. I have two models in two separate files that are referencing the JSON type. If I try to add a third model class in a third file, I run into this compiler crash. But if I lump that third class into one of those first two files, everything's fine.

  3. drhr commented on Oct 13, 2014

    @drhr

    Now when I try this on a brand new project, any reference to JSON causes the seg fault (in 6.0.1 and 6.1 beta 1 and beta 2).

  4. Noobish1 commented on Oct 13, 2014

    @Noobish1
    ContributorAuthor

    I'd suggest just importing SwiftyJSON.swift for now, that seemed work fine for me.

  5. drhr commented on Oct 13, 2014

    @drhr

    That works for now 🍺

  6. LukeTangPL commented on Oct 13, 2014

    @LukeTangPL
    Member

    I think it's a Xcode's bug.
    How about this:

    class Object {
         func method(json: SwiftyJSON.JSON) {
         }
    }
    
  7. broglep-work commented on Oct 24, 2014

    @broglep-work

    I think we experience the same or a similar problem, we have include the Xcode project as dependency.

    With Xcode Version 6.1 (6A1052d) the compilation fails with
    Segmentation Fault: 11
    [snip]

    1.  While silgen emitConstructor SIL function @_TFVSC20NSJSONReadingOptionsCfMS_FT_S_ for 'init' at <invalid loc>
    

    We could track it down to the SwiftJSON init method at https://github.com/SwiftyJSON/SwiftyJSON/blob/master/Source/SwiftyJSON.swift#L67-73

    When we comment out that part, the segmentation fault does not happen.
    Including SwiftJSON directly as swift file also seems to solve the problem. I also think its likely a Xcode bug, and we have filed a bugreport to apple

  8. jeeftor commented on Oct 28, 2014

    @jeeftor

    I think i'm having similar issues

  9. edwellbrook commented on Nov 4, 2014

    @edwellbrook

    I'm seeing this issue as well :(

  10. mwaterfall commented on Nov 5, 2014

    @mwaterfall

    I'm experiencing this even when just importing the swift file

    1.  While emitting IR SIL function @_TFFC7App20MUpdateOperation17processCachedDataFS0_FT_T_U_FT_T_ for expression at [/Users/mwaterfall/Projects/.../UpdateOperation.swift:420:25 - line:469:9] RangeText=...
    

    Any fixes about?

  11. lhammond commented on Nov 5, 2014

    @lhammond

    I am also having this issue

  12. adamszeptycki commented on Nov 8, 2014

    @adamszeptycki

    Now I have exactly the same issue, but as long as I use SwiftyJSON in file called Server.swift everything works fine. Even if I add another class in that file (doesn't matter if its pure Swift class or class that is subclass for NSObject) it still works. Did any file apple bug report (for my this is bug with compiler)?

  13. mwaterfall commented on Nov 17, 2014

    @mwaterfall

    Ahh, this is frustrating! Totally unusable, even on Xcode 6.1.1 GM.

  14. dave-kong commented on Nov 21, 2014

    @dave-kong

    Same issue here. @broglep-koubachi 's suggestion is right on.

  15. 16 remaining items

  16. Blackjacx commented on Jan 17, 2015

    @Blackjacx

    I have a segfault 11 too when I just include SwiftyJSON.swift in my project. It occurred suddenly after a small refactoring. Before everything was finde. So I think it has nothing to do with the subproject but with some strange swift compiler behaviour.

  17. endel commented on Jan 18, 2015

    @endel

    Same issue here. I'm having a new surprise at each attempt to compile this.

    When registering an Alamofire request callback, that's the compiler error I was receiving:

    Command failed due to signal: Segmentation fault: 11
    

    After tried what @yuhua-chen suggested, the problem changed, in a very surprising way:

    Undefined symbols for architecture x86_64:
      "__TMdV10SwiftyJSON4JSON", referenced from:
          __TFFC7example14ViewController11viewDidLoadFS0_FT_T_U0_FV10SwiftyJSON4JSONT_ in ViewController.o
    ld: symbol(s) not found for architecture x86_64
    

    After removing the Alamofire callback, the program do compile, which doesn't help.

  18. rustedivan commented on Jan 18, 2015

    @rustedivan

    @endel: would you be able to share a gist of your crashing/non-crashing code? That sounds like a different segfault that I'd like to minimise and report against swiftc asap. Thanks.

  19. endel commented on Jan 18, 2015

    @endel

    @rustedivan sure, here it is: https://gist.github.com/endel/6e2f9ac7279a6ee42b90

    I've written 3 examples to demonstrate what is happening for me:

    1. Runs fine
    2. Segmentation fault
    3. Linker error

    I'm using a custom Request class for this.

  20. rustedivan commented on Jan 18, 2015

    @rustedivan

    Excellent, thanks for putting in the effort with the different cases. Swift compiler crashes are collecting over at practicalswift/swift-compiler-crashes so these reports are golden.

  21. Blackjacx commented on Jan 19, 2015

    @Blackjacx

    For me the following caused a segfault while type is an optional:

    switch type {
        case .aType:
            // Do Something
        default:
            break
    }
    

    and this solved it:

    switch type {
        case .Some(.aType):
            // Do Something
        default:
            break
    }
    
  22. sman591 commented on Feb 7, 2015

    @sman591

    @kostiakoval's workaround solved it for me. I pushed a copy of the changes to https://github.com/sman591/SwiftyJSON/tree/compiler-segfault-workaround in case anyone else wants to try it.

  23. jzarzuel commented on Feb 15, 2015

    @jzarzuel

    Same here :-(
    If you remove "options" parameter from init() and pass "AllowFragments" as default value to NSJSONSerialization (cannot be modified as removed as input parameter)... It works.

    It's a shame that Apple had relased this faulty compiler (this is one of the many bugs it has)

  24. sferoze commented on Feb 20, 2015

    @sferoze

    I just had this issue! It was hard to track down but essentially once I removed a function that included JSON object from SwiftyJSON class, it crashed my code with the segmentation fault.

    So basically if I removed code from the project it crashed.

    When I imported SwiftyJSON.swift into my project it started to work.

    Here was the stack overflow I posted: http://stackoverflow.com/questions/28623405/why-can-i-not-remove-an-unused-function-from-my-swift-class

  25. broglep-work commented on Feb 20, 2015

    @broglep-work

    We got feedback from apple, they request to test it with Xcode 6.3 and the news swift 1.2 compiler. We still have to migrate our project, so we can't yet test it, so if someone else that has the problem could try it with Xcode 6.3 that would be great

  26. imanzarrabian commented on Feb 20, 2015

    @imanzarrabian

    @broglep-koubachi I had the exact same pb combining Alamofire and SwiftyJSON doing something like this

    Alamofire.request(.GET, APIClientConstants.kApiBaseUrl + "/vls/v1/stations", parameters: params).responseJSON { (req, response, json, error) in
                if (error != nil) {
                    completionHandler(APIResponseState.Error(error!))
                }
                else {
                    var json = JSON(json!)
                    completionHandler(APIResponseState.Correct(json))
                }
            }
    

    It wouldn't compile under Xcode 6.1.1 and swift 1.1 but it works with swift 1.2 and Xcode 6.3 after manually updating Alamofire and SwiftyJSON to Swift 1.2 of course

  27. thekie commented on Mar 22, 2015

    @thekie
    Contributor

    +1 Removing the options parameter from init(data:options:error:) worked for me as well.

  28. Isuru-Nanayakkara commented on Apr 18, 2015

    @Isuru-Nanayakkara

    This seems to be fixed in Xcode 6.3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions