2017-04-05 3 views
0

dans notre système, un processus est donné une haute priorité au tout début. Cependant, il s'est produit un crash par le signal 14. La solution est d'ajouter une paire de "setDefaultPriority" et "improvePriority" autour de "l'opération d'écriture de fichier". Quelqu'un peut-il me dire pourquoi "priorité de processus inférieure" peut le réparer.le bon pour abaisser la priorité de processus Linux

Répondre

0

Ce n'est probablement pas un correctif, mais plutôt une solution de contournement à certains problèmes d'application.

Le signal 14 est SIGALRM principalement utilisé pour implémenter un délai d'expiration. À un endroit application utilise alarm() et de cette façon planifie un signal futur. Lorsque le signal arrive, une seconde partie de l'application (appelée gestionnaire de signal) devrait être prête à le recevoir.

Le signal 14 est décoché, donc ces deux parties ne sont pas correctement synchronisées (c'est un bug!).

Il est possible que le fait de modifier légèrement la priorité rende le gestionnaire de signaux prêt à l'arrivée du signal. Les chances sont qu'il ne fonctionnera pas sur une occasion différente ou un système différent.

+0

Salut, merci de répondre. Est-ce lié à l'appel de blocage dans mon cas? – nathan

+0

Habituellement, même un appel bloqué aurait une erreur avec EINT, mais [il existe d'autres possibilités] (https://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html#Interrupted-Primitives). – kubanczyk