0 votes

Redémarrer un Mac avec une application gelée

Je viens de réaliser que je ne sais pas comment OS X gère les applications.

Aujourd'hui, Google Chrome s'est figé sur mon OS X Yosemite 10.10.2. Après le gel, je l'ai simplement quitté en utilisant "Force quit". J'ai même envoyé un rapport à Apple.

Le Dock continue de l'afficher comme étant "en cours d'exécution", mais le fait de cliquer sur "Quitter de force" n'a aucun effet. J'ai redémarré le Finder et le Dock, mais Chrome continuait à s'afficher comme étant "en cours d'exécution". Cependant, aucun processus me rappelant "Chrome" n'était répertorié dans le moniteur d'activité ou dans l'application ps aux dans un terminal.

J'ai donc décidé de redémarrer ma machine et c'était embarrassant : enter image description here

Je redémarrais donc parce que Chrome ne répondait pas, mais ma machine refusait de redémarrer parce que je devais d'abord quitter Google Chrome, qui ne figurait pas parmi les processus en cours. Heureusement, Apple n'a pas encore supprimé le bouton d'alimentation de ses ordinateurs portables.

Quand cela se produit-il ? Quel fichier "verrou" dois-je supprimer pour indiquer à OS X qu'une application "en cours d'exécution" ne l'est pas en réalité ?

PS. N'est-ce pas un comportement similaire à celui de MS Windows 95 ? Quel dommage...

0 votes

Dans cette situation, une autre façon de quitter de force Chrome (et ses processus d'onglets associés) consiste à ouvrir Terminal.app et à exécuter la commande suivante : killall 'Google Chrome' (attention, ces guillemets simples sont nécessaires). Cela tue le(s) processus ciblé(s) avec un signal TERM. Je ne suis pas sûr que cela fonctionne lorsque "Force Quit" a échoué d'une manière ou d'une autre (mais killall debe toujours fonctionner).

0 votes

Merci. Mais où cette information reste-t-elle dans l'OS ? Je veux dire : aucun processus dans "ps aux" n'avait quelque chose de vaguement lié à Chrome. Ma question n'est pas seulement de savoir comment récupérer dans ces situations : J'aimerais vraiment comprendre comment le système d'exploitation gère le lancement et la suppression des applications.

0 votes

Il s'agit probablement d'une situation extrême. Je pense que le fait de tuer ("Force Quit") Google Chrome ne tue pas tous les processus "Google Chrome Helper", peut-être que le problème initial était que l'un d'entre eux a perdu la tête et a été détaché comme enfant du processus GC principal. Si c'est le cas, la solution pourrait être de forcer manuellement l'arrêt de tous les processus "Google Chrome Helper" restants.

1voto

Moreaki Points 145

Dans les très rares occasions où cela m'est arrivé dans le passé, j'ai commencé à bricoler avec dtrace scripts pour savoir ce qui se passe. Un scripts prêt à l'emploi est opensnoop .

Donc, la prochaine fois que vous rencontrerez ce problème, jouez avec comme suit :

$ sudo opensnoop -ve

ou de limiter la sortie à ce que vous attendez :

$ sudo opensnoop -ve | grep -i chrome

Les processus à courte durée de vie peuvent ne pas apparaître dans votre base de données. ps Une autre option consiste donc à utiliser le cadre de traçage des limites de fonctions disponible pour les services de l'UE. dtrace . Très probablement, votre version OSX aura des points d'entrée simples définis pour la couche VFS (appelez-la dump_vfs.d) :

#!/usr/sbin/dtrace -s

#pragma D option quiet
#pragma D option switchrate=10hz

dtrace:::BEGIN {
    printf("%-12s %6s %6s %-12.12s %-12s %s\n", "TIME(ms)", "UID",
        "PID", "PROCESS", "CALL", "DIR/FILE");
}

fbt::VNOP_CREATE:entry,
fbt::VNOP_REMOVE:entry {
    this->path = ((struct vnode *)arg0)->v_name;
    this->name = ((struct componentname *)arg2)->cn_nameptr;
    printf("%-12d %6d %6d %-12.12s %-12s %s/%s\n",
        timestamp / 1000000, uid, pid, execname, probefunc,
        this->path != NULL ? stringof(this->path) : "<null>",
        stringof(this->name));
}

L'appeler est similaire à ce qui précède :

$ sudo dtrace -s dump_vfs.d

Une prouesse fonctionnellement proche peut être réalisée par la fs_usage surtout si vous soupçonnez le processus en question d'être suspendu dans une boucle d'événements, tout en continuant à accéder à la couche fs en utilisant des appels système.

C'est peut-être un peu exagéré, car le choix le plus pragmatique est probablement d'appuyer sur le bouton d'alimentation. Puisque vous avez mentionné que vous avez envoyé un rapport à Apple, vous pourriez vouloir le vérifier à nouveau aux endroits suivants :

~/Library/Logs/DiagnosticReports/
/Library/Logs/DiagnosticReports/

Cela devrait vous donner des indications supplémentaires sur la raison pour laquelle cette application s'est arrêtée de cette manière.

Votre curiosité concernant la gestion de telles situations par le système d'exploitation peut probablement être partiellement satisfaite en consultant les sources du noyau XNU à l'adresse suivante bsd/kern/kern_shutdown.c . À un moment donné, le processus d'arrêt initié par le Finder se heurte à un timeout, qui consigne alors les tentatives de SIGTERM échouées (extrait de ma copie locale de la version 2782.1.97 des sources du noyau Darwin) :

    [...]
    for (p = allproc.lh_first; p; p = p->p_list.le_next) {
        if (p->p_shutdownstate == 1) {
            printf("%s[%d]: didn't act on SIGTERM\n", p->p_comm, p->p_pid);
            sd_log(ctx, "%s[%d]: didn't act on SIGTERM\n", p->p_comm, p->p_pid);
        }
    }
    [...]

Cela indique que le Console peut vous montrer les entrées de journal pertinentes. En fonction d'une situation potentielle de live lock concernant un fichier détenu sur une partition montée en réseau qui vient de perdre son signal de couche 1, le noyau entrera dans une boucle d'attente de 100 à 200 secondes, en fonction de certains paramètres de timeout de montage VFS.

Pour l'anecdote, j'ai eu très peu de plaisir avec la stabilité de Chrome sur mon MBP, principalement parce que je crois que les mises à jour récentes du pilote central nvidia dans le MBP ont eu un impact sur la stabilité de Chrome. OSX >= 10.9 ainsi que les fonctionnalités élevées de gestion de l'énergie et maintenant appnap, combinés aux récentes avancées dans la gestion du plugin shockwave dudit navigateur, ont causé des ravages à plusieurs reprises. En plus de cela, Chrome en 2014 était pour moi le plus gourmand en énergie de tous les navigateurs.

Il existe probablement une demi-douzaine d'autres scénarios expliquant pourquoi vous avez été accueilli par cette interface graphique de rétroaction peu motivée. Aucun d'entre eux ne se rapproche, même de loin, des problèmes auxquels vous avez brièvement fait référence en mentionnant Win95 :).

Appuie sur le bouton d'alimentation, déjà !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X