Erreur de segmentation en C

Discutez d'informatique ici !
Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 08:03

par ampholyte » 08 Jan 2014, 00:13

Bon ok, est-ce que dans ta fonction write_chunk tu pourrais faire 2 traces différentes pour voir ce qui se passe.

Code: Tout sélectionner
void write_chunk(int start_block,char* buffer,int n) //n octet dans buffer
{
   int nbBande=compute_nstripe(n);
   int nbBlockParite=(start_block/g_disk.ndisk);
   int blockCourant=(start_block + nbBlockParite);
   int diskCourant=0;
   int pos;
   int k;

        fprintf(stdout, "nbBande : %d\n", nbBande);
   for(k=0;k<nbBande;k++) /*On parcourt les bandes*/
   {

      diskCourant=(blockCourant % g_disk.ndisk);
                fprintf(stdout, "diskCourant : %d\n", diskCourant);
      if (g_disk.storage[diskCourant] != NULL) /*disk courant existe*/
      {
         pos=fseek(g_disk.storage[diskCourant],(blockCourant*BLOCK_SIZE),SEEK_SET);
         write_stripe(&buffer,pos);
         blockCourant=blockCourant+1;
         if (blockCourant==g_disk.ndisk-1)
         {
            blockCourant=0;
         }
      }
   }
}



Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 08 Jan 2014, 00:17

Voilà le résultat

Code: Tout sélectionner
nbBande : 21
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0
diskCourant : 0


C'est pas logique la valeur de diskCourant devrait changer !!!

J'ai trouvé ce qui planté je n'incrémentait pas blockCourant tous le temps; je l'ai sorti du if.

En revanche je prend une nouvelle erreur de segmentation ;)

nbBande : 21
diskCourant : 0
diskCourant : 1
Erreur de segmentation (core dumped)
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 08:03

par ampholyte » 08 Jan 2014, 00:37

Rajoute une trace entre chaque partie pour voir où cela plante.

Peux-tu remettre le code de ta fonction white_stripe ?

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 08 Jan 2014, 00:45

ampholyte a écrit:Rajoute une trace entre chaque partie pour voir où cela plante.

Peux-tu remettre le code de ta fonction white_stripe ?



Je viens de rendre mon projet ;)

De toute façon je m'en doutais que je ne pourrais pas le terminé en une journée et une nuit. J'en ai fait à peine le tiers...m'enfin bref.

Je pense que je vais le continuer à mon rythme; après tout la note c'est pas le plus important, puis je verrais bien le corrigé après. (Disons que si j'ai pas raté les partiels ça devrait le faire sinon...)

Merci en tout cas ! de ta disponibilité et ta patience.

Sur ce, j'ai une nuit blanche derrière mois alors =) Bonne nuit :dodo:
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 08:03

par ampholyte » 08 Jan 2014, 00:57

Pas de problème =).

Bonne nuit à toi.

Un petit conseil pour la prochaine fois (histoire que ce soit plus simple pour tout le monde), fais toi un petit dépôt github pour que l'on puisse avoir accès à tes sources afin de cibler plus rapidement le problème =).
D'ailleurs si tu souhaites poursuivre ce projet n'hésite pas à le faire comme cela il sera plus facile de t'aider.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 11 Jan 2014, 21:11

hello,

conclusion du projet:
faire des tests unitaires.
la vie est une fête :)

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite