28 votes

Pourquoi 'Simulate Background Fetch' conduit-il à un crash (libsystem_kernel.dylib`mach_msg_trap) depuis Xcode 8?

Je suis sur macOS Sierra, Xcode 8 et je me bloque chaque fois que j'essaie de simuler la récupération en arrière-plan sur un appareil iOS 10 réel. Cela ne se produit PAS lors de l'utilisation du simulateur. Cela se produit dans tous les projets, y compris ceux fraîchement créés.

     libsystem_kernel.dylib`mach_msg_trap:
    0x18cfec164 <+0>: movn   x16, #0x1e
    0x18cfec168 <+4>: svc    #0x80
->  0x18cfec16c <+8>: ret   (Thread 1: signal SIGSTOP)
 

Je n'ai aucun autre appareil iOS avec lequel tester; Quelqu'un d'autre rencontre ce problème?

19voto

Adam Maloney Points 13

J'exécute Xcode 8.1 avec un appareil - il ne plante pas, mais il atteint un point d'arrêt que vous ne pouvez pas trouver / modifier / supprimer.

Je vais dans Debug> Continue et ça continue comme prévu.

15voto

Matt Points 149

Vous n'êtes pas seul - je rencontre cela aussi. Vraiment énervant. Je viens de déposer un bug.

5voto

Comme souligné par d'autres. il n'est pas un accident, mais une auto de point d'arrêt déclenché par le système. Comme expliqué ici par eskimo:

Alors, pourquoi faut-il s'arrêter dans mach_msg_trap? L'objectif est de vous donner une possibilité de définir un point d'arrêt dans votre fond de récupérer le code de gestion, de sorte Xcode forces de votre application pour arrêter, comme si c'était vous qui a frappé la pause bouton (Debug > Pause). Il s'arrête en mach_msg_trap parce que c'est où en est votre fil conducteur est assis lorsque votre application est suspendue dans l' arrière-plan. En bref, quand tu fais un Debug > Simuler le Fetch en arrière-plan et arrêtez-vous dans mach_msg_trap:

  1. C'est un comportement attendu
  2. Ce n'est pas un signe de problème
  3. Vous pouvez continuer l'exécution via le Debug > Continuer

Personnellement, je le vois plus comme un bug d'une fonctionnalité.

2voto

Lee Ann Rucker Points 51

Il ne plante pas, quelque chose envoie un signal pour suspendre l'exécution de l'application. Sans savoir comment la récupération simulée se produit, je ne peux que deviner pourquoi - cela pourrait faire partie de la simulation ou un effet secondaire de la façon dont l'application la gère. Xcode était utilisé pour prendre en charge la désactivation permanente des coupures sur les signaux (SIGPIPE a toujours été mon fléau), mais cela n'a pas fonctionné pour plusieurs versions maintenant.

0voto

Lcrnice Liu Points 11

CIBLES -> Gapabilities -> Modes d'arrière-plan -> ON

et cochez [Audio, AirPlay et Image dans l'image]

Ça a marché pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X