Ich verwende NSTask, um meine Hilfsprogramm ausführen. Auf 99% meiner Kundensysteme funktioniert das gut, aber zwei kamen zu mir zurück und ließen mich wissen, dass es nicht funktioniert. Einer von ihnen war nett genug, um mir das Problem per Remote Desktop anzusehen.NSTask Subprozess stecken in _dyld_start
Ich probierte viele verschiedene NSPipe/NSFileHandle Kombination für StandardOutput/StandardError, um sicherzustellen, dass das Problem nicht im Zusammenhang mit dem Auffüllen dieser Puffer. Beispiel 1 und 2. Meine Vermutung ist, dass es nicht verwandt ist, weil es auf so vielen Systemen funktioniert und _dyld_start ist zu früh im Anwendungslebenszyklus, um StandardOutput/StandardError zu füllen.
Weitere Hinweise über das Problem:
- Starten der Helfer-App aus dem Terminal funktioniert gut.
- Anbringen und die GDB auf dem steckengebliebenen Prozess lösen und nach Wert funktioniert es gut und wenn es fertig NSTask nimmt Arbeit nach -waitUntilExit.
- Mit Gabel (2) und execv (3) statt NSTask der Lage ist, zu starten und die Helfer gut laufen.
- Der Parent-Prozess ist Sandboxed aber ich denke, vorherige Berichte, wo nicht-Sandboxed auf Mac OS X 10.6/10.7.
Screenshot des Prozesses Probe von Activity Monitor:
Irgendwelche Hinweise oder Tipps zur Fehlersuche, um herauszufinden, warum die Helfer in _dyld_start stecken sind willkommen!
Warum veröffentlichen Sie Bilder von Textdaten? Kopieren Sie den Textbeispielbericht und fügen Sie ihn ein. Überprüfen Sie außerdem, ob Konsolenprotokollnachrichten vorhanden sind. Und prüfen Sie nach 'DYLD_ *' Umgebungsvariablen. –
Empfehlung, die Konsole zu überprüfen. Für 'DYLD_' -Umgebungsvariablen, vorausgesetzt, Sie setzen sie nicht selbst, suchen Sie in ~/.MacOSX/environment.plist. –
Konsole hat nichts verraten. Wird 'DYLD_' beim nächsten Zugriff auf das Gerät überprüfen. – catlan