[SOS] Problème de faute triple

Bombela bombela at free.fr
Jeu 29 Mai 16:46:14 CEST 2008


Peut être une petite erreur de décalage dans la gestion des exceptions 
cpu ou des irq ?
Ou encore une petite erreur d'initialisation lors du boot ?

Si tu désassemble ton code et celui de SOS dans le même dialecte
et que tu fait un diff, peut être que ça peut te donner des idées...

Je lance ça comme ça...

Bombela

Julien Pichon a écrit :
>
>     Bonsoir à tous,
>      
>     Je suis arrivé jusqu'à l'article 4 qui traite de la mise en place
>     de la pagination,
>     et je m'adresse à vous car j'ai un problème à l'exécution. Bochs
>     dans ses logs me renvoit ceci
>     tout en rebootant en boucle la machine virtuelle:
>      
>     /**************************************************/
>     Message in a bochs
>     00016359077e[CPU0 ] interrupt(): not accessable or not code
>     segment cs=0x0008
>     00016359077e[CPU0 ] interrupt(): not accessable or not code
>     segment cs=0x0008
>     00016359077i[CPU0 ] CPU is in protected mode (active)
>     00016359077i[CPU0 ] CS.d_b = 32 bit
>     00016359077i[CPU0 ] SS.d_b = 32 bit
>     00016359077i[CPU0 ] EFER   = 0x00000000
>     00016359077i[CPU0 ] | RAX=0000000000000000  RBX=000000000002d8e4
>     00016359077i[CPU0 ] | RCX=0000000000000001  RDX=0000000000000002
>     00016359077i[CPU0 ] | RSP=00000000002044ce  RBP=0000000000204504
>     00016359077i[CPU0 ] | RSI=000000000005453a  RDI=000000000005453b
>     00016359077i[CPU0 ] |  R8=0000000000000000   R9=0000000000000000
>     00016359077i[CPU0 ] | R10=0000000000000000  R11=0000000000000000
>     00016359077i[CPU0 ] | R12=0000000000000000  R13=0000000000000000
>     00016359077i[CPU0 ] | R14=0000000000000000  R15=0000000000000000
>     00016359077i[CPU0 ] | IOPL=0 id vip vif ac vm RF nt of df if tf sf
>     zf af pf cf
>     00016359077i[CPU0 ] | SEG selector     base    limit G D
>     00016359077i[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
>     00016359077i[CPU0 ] |  CS:0008( 0001| 0|  0) 00000000 000fffff 1 1
>     00016359077i[CPU0 ] |  DS:0010( 0002| 0|  0) 00000000 000fffff 1 1
>     00016359077i[CPU0 ] |  SS:0010( 0002| 0|  0) 00000000 000fffff 1 1
>     00016359077i[CPU0 ] |  ES:0010( 0002| 0|  0) 00000000 000fffff 1 1
>     00016359077i[CPU0 ] |  FS:0010( 0002| 0|  0) 00000000 000fffff 1 1
>     00016359077i[CPU0 ] |  GS:0010( 0002| 0|  0) 00000000 000fffff 1 1
>     00016359077i[CPU0 ] |  MSR_FS_BASE:0000000000000000
>     00016359077i[CPU0 ] |  MSR_GS_BASE:0000000000000000
>     00016359077i[CPU0 ] | RIP=0000000000202337 (0000000000202337)
>     00016359077i[CPU0 ] | CR0=0x80010011 CR1=0x0 CR2=0x0000000000000000
>     00016359077i[CPU0 ] | CR3=0x01fef000 CR4=0x00000000
>     00016359077i[CPU0 ] >> add byte ptr ds:[eax], al : 0000
>     00016359077e[CPU0 ] exception(): 3rd (13) exception with no
>     resolution, shutdown status is 00h, resetting
>     00016359077i[SYS  ] bx_pc_system_c::Reset(SOFTWARE) called
>     00016359077i[CPU0 ] cpu software reset
>     /***************************************************/
>      
>     Ce qu'il faut savoir c'est que j'ai réécris les fichiers
>     exception_wrappers.S et
>     irq_wrappers.S [ainsi que boot.S (mais je pense qu'il n'a pas
>     d'incidence ici)]
>     pour qu'ils puissent être compilés avec nasm.
>      
>     Sinon après avoir expérimenté un peu les choses, l'erreur provient
>     je pense de cette portion
>     de code suivante qui se situe dans sos/main.c dans la fonction
>     test_paging:
>      
>       sos_paging_map(ppage_new, vpage_code,
>                              FALSE,
>                              SOS_VM_MAP_ATOMIC
>                            | SOS_VM_MAP_PROT_READ
>                            | SOS_VM_MAP_PROT_WRITE);
>      
>     en essayant de changer les paramètres envoyés à cette fonction je
>     me suis aperçu que c'est le mapping de la
>     page de code actuelle (vpage_code) qui doit déclencher une faute,
>     qui en redéclenche une autre
>     jusqu'à avoir une faute triple. Et d'après le numéro la ligne de log
>     "00016359077e[CPU0 ] exception(): 3rd (13) exception with no
>     resolution, shutdown status is 00h, resetting"
>     je pense que l'erreur viendrait d'un #GP (general protection).
>      
>     Par contre je n'en sais pas plus et j'avoue être un peu perdu, si
>     des personnes voient d'où l'erreur peut
>     provenir, ou il faut que je reagarde, je veux bien de l'aide.
>      
>     D'avance merci.
>
>
> ------------------------------------------------------------------------
> Tous vos amis discutent sur Messenger, et vous ? Téléchargez 
> Messenger, c'est gratuit ! <http://www.windowslive.fr/messenger/>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Sos mailing list
> Sos at the-doors.enix.org
> http://the-doors.enix.org/cgi-bin/mailman/listinfo/sos
>   


Plus d'informations sur la liste de diffusion Sos