Xcode 11.4 - Projekt archiwizacji - Błąd segmentacji 11

12

Właśnie zaktualizowałem Xcode do 11.4, a podczas archiwizacji projektu wyświetla mi się komunikat „Błąd segmentacji 11”

Ten projekt zostałby zarchiwizowany za pomocą Xcode 11.3.1, ale teraz nie ..

Czy ktoś jeszcze wpadł na ten sam problem?

wprowadź opis zdjęcia tutaj

Edycja: 15 kwietnia 2020 r

Firma Apple właśnie wydała Xcode 11.4.1

Artur Marchetto
źródło
Obejrzyj ten post: stackoverflow.com/a/42168123/2583679
Tom
3
@Tom dziękuję, ale to nie rozwiązuje problemu .. jestem prawie pewien, że to błąd Apple
Artur Marchetto

Odpowiedzi:

11

Natrafiłem na ten sam problem. Archiwizacja korzysta z konfiguracji kompilacji Release, więc przeszedłem przez wszystkie ustawienia kompilatora, aby dowiedzieć się, które z różnic prowadzą do tych błędów segmentacji.

W moim przypadku problem znika po zmianie ustawienia Włącz testowalność na TAK dla wydania .

Nie, nie mam pojęcia, jakie są tego wady w kompilacji archiwum lub wydania, a nawet dlaczego to konkretne rozwiązanie łagodzi problem, ale na koniec mam projekt, który zajęł rok, aby przejść do tego etapu i bardzo zależy mi na tym, aby przekazać to wewnętrznym testerom wersji beta, więc zamierzam to przesłać podczas lotu testowego i zobaczyć, jak sobie radzę.

Mam wrażenie, że jest to zdecydowanie błąd Apple, ponieważ kompilator nie powinien w ogóle powodować błędów Seg. Obsługuje to fakt, że kompiluje się w konfiguracji Debug. Mój projekt jest tak duży, że nie wiem, jak go odtworzyć, aby zgłosić błąd, ale zobaczę, czy mogę uzyskać odpowiedź na forach Apple.

David Monagle
źródło
Wystąpił ten sam problem w Xcode 11.4.1, zmiana tego ustawienia również działała dla mnie. Dokumenty mówią, że ta flaga ma związek z udostępnianiem prywatnych interfejsów, więc może coś tam jest ... Po aktywowaniu tego ustawienia produkt zostanie zbudowany z opcjami odpowiednimi do uruchamiania automatycznych testów, takich jak udostępnianie prywatnych interfejsów testy. Może to spowodować, że testy będą działały wolniej niż bez włączonej możliwości testowania.
keegan3d
5

Dla mnie pomógł znaleźć problem, kiedy ustawiłem w ustawieniach kompilacji SWIFT_COMPILATION_MODEna wholemodule. Następnie po kompilacji dostał bardziej szczegółowy błąd, który doprowadził do funkcji klasy, która spowodowała błąd. Potem zmieniłem to z powrotem, tak jak było.

Może to też pomaga.

W moim przypadku użyto operatora trójskładnikowego dla zestawu parametrów wejściowych init. Wygląda na to, że Swift 5.2 już go nie obsługuje.

// Leads to error with Xcode 11.4
init(value: UIColor = Constants.staticBoolean ? .white : .green)
Smoczki
źródło
2
Dziękuję bardzo!! uczyniłeś mój dzień !!
nomnom
3
To naprawia również błąd czasu kompilacji. Winowajcą jest operator trójskładnikowy w domyślnym param. Mam nadzieję, że Apple wkrótce naprawi błąd.
Dao Xiang
2
Nie rozmawiam z gałęzią Swift master github.com/apple/swift/tree/master . Więc może już zostało naprawione.
Cœur
1

W moim przypadku miałem błąd z kapsułą Eureka

Segmentation fault: 11 (in target 'Eureka' from project 'Pods')

W pliku Pods podałem najnowszą wersję:

pod 'Eureka', '~> 5.2.1'

Ustaw także SWIFT_COMPILATION_MODEna wholemodule.

landonandrey
źródło
0

Zmieniłem się #imageLiteral(resourceName: "image_name")naUIImage(imageLiteralResourceName: "image_name")

susemi99
źródło
0

Podobnie jak inni respondenci, w komunikatach o błędach (w Xcode 11.4) został ukryty problem SwiftUI. W moim przypadku użycie .embedInScrollView()spowodowało błąd kompilacji. Wyłączenie tych połączeń naprawiło to. W celu obejścia tego problemu wprowadziłem .embedInScrollView()ViewModifier w następujący sposób:

public struct WrapInScrollView: ViewModifier {
    public func body(content: Content) -> some View {
        content
            .embedInScrollView()
    }

    public init() {}
}

Następnie używam tego modyfikatora trochę jak oryginalnego wywołania, jak poniżej:

.modifier(WrapInScrollView())

Oznacza to, że nadal możesz osadzać w scrollView, ale błędy Seg 11 znikają.

Luke Smith
źródło
0

Niestety rozwiązanie Enable Testability nie zadziałało.

Tymczasowym obejściem (do czasu rozwiązania przez Apple problemu kompilatora Xcode 11.4 Swift) jest przełączenie poziomu optymalizacji na „ Brak optymalizacji ” dla wydania, w przypadku celu, który się nie powiedzie ( SWIFT_OPTIMIZATION_LEVEL = "-Onone";). Działa w naszym projekcie, który jest podzielony na wiele ram. Trzeba tylko ustawić -Onone.

Ale dokumentacja Apple prosi o nie wysyłanie kodu z tą flagą . Jest przeznaczony do programowania, wykonuje minimalne optymalizacje i zachowuje wszystkie informacje debugowania.

Myślę, że musimy poczekać: ”(

jc_35
źródło
-1

Otrzymywałem ten wyjątek, a dzienniki archiwum pomogły mi zrozumieć, że znajduje się on w określonym pliku SwiftUI. W procesie eliminacji okazuje się, że zostawiłem contentInsets()i alwaysBounceVertical()modyfikatory, VStackktóre nie były częścią List:

VStack {
    // more stuff
}
.contentInsets(UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0))
.alwaysBounceVertical()

Usunięcie tych modyfikatorów pozwoliło na pomyślne ukończenie archiwum wydania.

Sam Mueller
źródło