dimanche 29 avril 2007

Comment simuler un "kernel panic" sous Mac OS X ("panic screen")

Lorsqu'un système Unix rencontre un sérieux problème, il effectue un kernel panic. Ceci est, heureusement, particulièrement rare.

Mac OS X étant un système basé sur Unix, il peut également subir un kernel panic. Que se passe-t-il alors ? Eh bien vous ne l'avez probablement jamais vu :)

Pour le voir, il vous suffit d'exécuter un tout petit programme dont voici le code source (ceci provient de l'excellent livre "Mac OS X Internals"):

// panic_test.c
// from "Mac OS X Internals", ISBN 0321278542
// figure 5.16 page 439
// The source is being made available "as is" under the GNU General Public License (GPL).
#include

#include

#include

#define KERN_PANICINFO_TEST (KERN_PANICINFO_IMAGE + 2)
int
main(void)
{
int ret;
size_t oldnewlen = 0;
int mib[3] = { CTL_KERN, KERN_PANICINFO, KERN_PANICINFO_TEST };
ret = sysctl(mib, 3, NULL, (void *)&oldnewlen, NULL, oldnewlen);
exit(ret);
}

Pour votre facilité, vous pouvez télécharger ce petit programme sur mon site:
Attention il faut l'exécuter avec sudo, comme ceci:
  • sudo ./panic_test.bin
  • tapez votre mot de passe (vous devez être administateur de la machine)
  • le programme s'exécute
Voyez aussi éventuellement une page sur le site officiel Apple.
... et voilà