web-dev-qa-db-fra.com

que signifie "sortie anormale avec le signal 9: tué: 9" signifie

Comment lire les codes d'erreur qui apparaissent dans la console?

<Warning>:  ....... -exited abnormally with signal 9: Killed: 9
<Warning>:  ....... -1 err = Bad file descriptor (0x00000009)

Voici ce que signifie signal 9, y a-t-il d'autres signaux en dehors de celui-ci. Toute documentation disponible pour cela.

Je reçois ce genre d'erreur, quand une application. lancé depuis Xcode se termine par le bouton "Stop" dans la barre d'outils Xcode.

(Une autre façon d'obtenir cette erreur est d'appuyer sur le bouton d'accueil, puis d'appuyer deux fois sur le bouton d'accueil et de fermer l'application.)

Les choses empirent même lorsque je lance l'application. à nouveau , en appuyant sur App. icône sur l'écran de l'iPad, l'application se bloque et lance "libMobileGestalt copySystemVersionDictionaryValue: impossible de rechercher ReleaseType dans le dictionnaire de version du système"

En trouvant sur le débordement de la pile, je constate que cette erreur se trouve dans les appareils iOS 6.

Ceci l'url indique qu'il s'agit d'une erreur SIGKILL et cela se produit lorsque "l'application est arrêtée immédiatement, sans aucune chance de nettoyer ou d'attraper et de gérer le signal"

Donc, je pense que libérer des objets dans -(void) didReceiveMemoryWarning n'aiderait pas à le résoudre, alors quelle pourrait être une solution définitive?

- (void)didReceiveMemoryWarning 
{
    [super didReceiveMemoryWarning];

    // Release objects.
    obj1 = nil;
    [view1 removeFromSuperView];
    view1 = nil;
    ...
}
14
weber67

Cela signifie que l'application a reçu un signal. Certains signaux pourraient être traités par les applications, d'autres non. Le signal 9 signifie que l'application doit être supprimée, elle n'est pas gérée par le processus, mais par le planificateur Linux. Le signal pour terminer le processus géré par le processus est SIGTERM (15), mais si le processus ne gère pas sa propriété, le processus continue de vivre.

voici les principaux signaux:

   Signal     Value     Action   Comment
   ──────────────────────────────────────────────────────────────────────
   SIGHUP        1       Term    Hangup detected on controlling terminal
                                 or death of controlling process
   SIGINT        2       Term    Interrupt from keyboard
   SIGQUIT       3       Core    Quit from keyboard
   SIGILL        4       Core    Illegal Instruction
   SIGABRT       6       Core    Abort signal from abort(3)
   SIGFPE        8       Core    Floating point exception
   SIGKILL       9       Term    Kill signal
   SIGSEGV      11       Core    Invalid memory reference
   SIGPIPE      13       Term    Broken pipe: write to pipe with no
                                 readers
   SIGALRM      14       Term    Timer signal from alarm(2)
   SIGTERM      15       Term    Termination signal
   SIGUSR1   30,10,16    Term    User-defined signal 1
   SIGUSR2   31,12,17    Term    User-defined signal 2
   SIGCHLD   20,17,18    Ign     Child stopped or terminated
   SIGCONT   19,18,25    Cont    Continue if stopped
   SIGSTOP   17,19,23    Stop    Stop process
   SIGTSTP   18,20,24    Stop    Stop typed at terminal
   SIGTTIN   21,21,26    Stop    Terminal input for background process
   SIGTTOU   22,22,27    Stop    Terminal output for background process
8
Breno Leitão

Sur les systèmes UNIX, le moyen normal de forcer la fin d'un processus d'application est de

kill -9 PROCESS_ID

Cela envoie à l'application le numéro de signal neuf, ce qui signifie: "vous quittez, MAINTENANT"

Les exceptions généralement non gérées entraîneront également la fermeture des applications par ce système d'exploitation avec ce signal. Tuer également une application via le "sélecteur de tâches" fait la même chose.

2
Cocoanetics

Je sais que la question initiale demandait ce que signifie le signal 9, mais j'ai trouvé cela en cherchant comment l'empêcher.

Pour moi, cela est dû à l'envoi d'une notification locale et à la non-mise en œuvre

application:didReceiveLocalNotification

dans mon AppDelegate. Une fois que j'ai fait cela, même avec la méthode vide, le crash n'a pas réapparu. Il y a de fortes chances que le système appelle quelque chose qui n'est pas géré par votre code.

1
Chris

sous linux, il y a environ 64 signaux (plus de 64 dans certains systèmes) ..si vous voulez voir tous les signaux numérotés, tapez simplement "kill -l" sans guillemet sur le terminal, vous verrez toute la liste des signaux. les signaux sont générés par le noyau ou par un appel système kill par l'utilisateur sur l'application particulière (par exemple, kill -n nom_app). le signal 9 est SIGKILL, il est utilisé pour tuer l'application. bien que nous puissions également masquer certains des signaux, mais tous les signaux ne peuvent pas être masqués dans une application. pour future réf. tu peux aller ici

http://en.wikipedia.org/wiki/Unix_signal

et voir aussi la page de manuel du signal, vous en saurez plus

0
user2760375