2010-04-30 3 views
1

J'ai fait des changements dans sched.c dans le noyau Linux 2.4 (devoirs), et maintenant le système entre dans la panique du noyau. La chose étrange est: il semble passer beaucoup de démarrage des contrôles et initialisations, et paniques seulement à la fin, montrant hte suivant trace de la pile:Panique du noyau semble être sans rapport avec les changements

update_process_times 
do_timer 
timer_interrupt 
handle_IRQ_event 
do_IRQ 
call_do_IRQ 
do)wp_page 
handle_mm_fault 
do_page_fault 
do_sigaction 
sys_rt_sigaction 
do_page_fault 
error_code 

Et l'erreur est: « Dans le gestionnaire d'interruption - et non la synchronisation "

Je sais que c'est difficile à dire sans aucun code, mais quelqu'un peut-il faire une supposition éclairée pour me diriger dans la bonne direction?

+0

Non sans code, ou au moins une description minimale de vos problèmes. –

Répondre

1

Je peux vous donner mon propre mantra personnel lors du débogage des problèmes de noyau: "c'est toujours ta faute."

Je vois souvent des problèmes dus à l'écrasement de la mémoire à l'extérieur de l'endroit où je travaille - si je alimente le matériel par une adresse incorrecte pour DMA par exemple. Vous pouvez être en train de bousiller une serrure d'une façon ou d'une autre; cela semble possible dans ce cas si vous voyez un timeout: un lock verrouillé oublié provoque un timeout à cause d'un blocage.

Pour moi, une panique dans update_process_times peut suggérer un problème avec le pointeur struct de la tâche ... mais je n'en ai vraiment aucune idée. Gardez à l'esprit que les éléments du noyau tournent souvent mal avant qu'une erreur ne se produise, donc un mauvais bit dans votre code peut être à blâmer, même si cela ne semble pas avoir d'effet. Si vous le pouvez, je vous recommande d'ajouter ou de supprimer votre code de manière incrémentielle et de vérifier si le problème peut être isolé.

+0

On dirait que nous avons accidentellement supprimé quelque chose dans sched.h Nous avons réinséré les changements dans une nouvelle version et maintenant cela fonctionne. Merci pour le conseil, et maintenant je voudrais voter ce fil fermé. Il semble trop flou pour aider quelqu'un. – EpsilonVector

Questions connexes