Absturz beim Gerät mit Ad-hoc-Verteilung

8

Plötzlich funktionieren meine Ad-hoc-Distributionen über Testflight und iTunes-Sync nicht mehr. Die mit der Ad-hoc-Build-Konfiguration verteilte Anwendung wird niemals vollständig auf dem Gerät gestartet. Es stürzt sofort mit einem Segmentierungsfehler 11 ab.

Das Seltsame an diesem Problem ist, dass ein Debug-Build auf allen unten genannten Geräten einwandfrei funktioniert. Dies lässt mich glauben, dass etwas in meinem project.pbxproj etwas vermasselt ist. Aber wenn ich im git-log nachschaue, sehe ich nichts in der Ordnung, das einzige, was sich dort verändert, sind die Architekturen ( ARCHS ) und die gültigen Architekturen ( VALID_ARCHS ) .

Kann ich richtig annehmen, dass das Durcheinander der Architekturen beim Start nicht zu einem tatsächlichen Fehler führen sollte, sondern während des Build-Prozesses?

Etwas Hintergrund:
Erwähnenswert ist auch, dass ich sowohl Xcode 4.4.1 als auch 4.5 GM installiert habe, als ich das GM auf das von App Store upgradete, entfernte es auch mein Backup von Xcode 4.4.1. Nach diesem Schluckauf habe ich alle Versionen von Xcode entfernt, neu gestartet und Version 4.4.1 installiert (das kann ich für armv6 bauen).

Irgendwelche nützlichen Tipps, wie man mit diesem Debugging fortfährt, sind extrem wertvoll für mich.
Vielen Dank für Ihre Zeit. & lt; 3

Konsolendruck und Absturzprotokoll vom Gerät:
- Ссылка
Ich kann bei Bedarf weitere Protokolle hinzufügen.

Aktuelle Umgebung:
 - Xcode Version 4.4.1 (4F1003)
 - Mac OS Version 10.8.2

Projekteinrichtung (pbxproj):
 - Ссылка

Getestete Geräte:
 - iPhone 3GS iOS 6
 - iPhone 3G iOS 4.2.1
 - iPad 2. Generation iOS 5.1.1
 - iPhone 4S iOS 5.1.1
 - iPhone 4 iOS 6.0
 - iPhone 4S iOS 6.0

Aktualisieren
Um mit dem Debuggen fortzufahren, habe ich Folgendes versucht:
 1. Überspringe Testflight und nutze die Oldschool-Methode, um eine Ad-hoc-Nachricht mit iTunes zu veröffentlichen. FEHLER  2. Erneutes Installieren der Bereitstellungsprofile FAIL
 2. Erstellen Sie einen neuen Benutzer auf meinem Computer und installieren Sie Xcode neu. FEHLER
 3. Erstellen Sie von einer anderen Maschine. FEHLER
 4. Setzen Sie die Optimierungsstufe auf: -O0 FAIL

Obwohl ich sicher war, dass nichts vom Code geändert wurde, sah ich keine andere vernünftige Erklärung dafür. Also fing ich an, das Projekt in git zurückzusetzen und starrte auf den Tag, an dem ich erfolgreich eine Ad-hoc-Veröffentlichung gemacht hatte. Zu meinem Entsetzen bemerkte ich, dass derselbe Segmentierungsfehler mir durch das Gewebe der Zeit folgte! Angesichts dieser Tatsache gab es nur noch eine einzige zu ergreifende Maßnahme. eine sehr mächtige Art des Debuggens, das ich "Spray-And-Bey" genannt habe. =) Mit anderen Worten, ich fing an, Teile des Codes zu kommentieren und zu sehen, ob das irgendeinen Unterschied machte und zu meiner völligen Überraschung tat es das tatsächlich. Nach einigen Stunden der Deaktivierung und Aktivierung von Teilen meiner Anwendung fand ich den Übeltäter: Ein statisches NSArray wurde nie beibehalten. Was mir dabei wirklich in den Sinn kommt, ist, dass die eigentliche Initialisierung des Arrays seit 2010 gleich aussieht. Warum also hat das plötzlich einen Speicherfehler zur Folge? Und warum hat der statische Analysator uns nicht davor gewarnt?

Ich bin im Augenblick zu erschöpft, um diese Fragen zu beantworten, ich werde versuchen, die Frage mit weiteren Einzelheiten zu aktualisieren und hoffentlich auch morgen eine Antwort zu finden.
Nochmals ein großes Dankeschön an alle, die bisher geholfen haben! & lt; 3

    
ABeanSits 25.09.2012, 10:08
quelle

1 Antwort

0

Die Ursache des Problems scheint das Problem der Parallelität zu sein:

%Vor%

In solch einem Fall kann es schwierig sein, die Wurzel des Problems zu finden und zu lösen (http://en.wikipedia.org/wiki/Unusual_software_bug#Heisenbug).

Vielleicht tust du etwas mit einem Objekt aus mehreren Threads ohne richtige Synchronisation; Oder Sie können das Objekt in einem Thread (zB Thread 0) freigeben und versuchen, von einem anderen Thread (Thread 1) darauf zuzugreifen.

    
Aleksandr Sergeev 27.09.2012 15:14
quelle