IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

désallocation mémoire et kernel panic


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Décembre 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Décembre 2008
    Messages : 53
    Par défaut désallocation mémoire et kernel panic
    Bonjour,

    Comme je le dit dans le titre du sujet, j'ai un problème pour désallouer la mémoire RAM que j'ai réservée pour un module. Le système est une Debian Lenny 5.03 32 bits avec l'option Hight Mem activée (PAE) pour que le système puisse utiliser les 8Go de RAM entre les différents programmes. La version de GCC utilisée est la 4.2.4.
    Le problème : il s'agit d'une réservation de 24Mo mémoire démarrant à 7.5Go. La réservation est faite avec ioremap et la libération avec iounmap. La libération de la mémoire s'effctue sans problème dans le cas où l'on ecrit rien dans la mémoire allouée mais si on essaye de libérer la mémoire après avoir écrit dedans, on a un kernel panic.
    La valeur affichée en héxadécimale de MEM_SHARE vaut 3.5Go mais il semblerait que ioremap tienne compte du depassement de 4Go.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include <linux/version.h>
    #include <linux/kernel.h>
    #include <linux/module.h>
    #include <asm/io.h>
     
    #define MEM_SHARE 7680 * 0x100000	// revervation a partir de 7.5Go
    #define MEM_SIZE   24 * 0x100000	// Reservation de 24Mo
     
    char * mem;
    int init_module(void)
    {
      char * mes;
      char * string={"* Simple - REALLY simple memory mapping test."};
      printk("\n\n");
      mem = (char *) ioremap((unsigned long) MEM_SHARE,(unsigned long) MEM_SIZE);
     
      memcpy((char *)mem,string,strlen(string));
      memcpy(mes, (char *)mem, strlen(string));
      printk(mes);
      printk("\n\n\n");
     
      printk("Ring buffer size at phys @  %x, at @ %x\n",MEM_SIZE, MEM_SHARE);
      printk("Ring buffer size at log @  %x, at @ %x\n",MEM_SIZE, mem );
      return (0);
    }
     
    void cleanup_module(void)
    {
      printk("Ring buffer size at phys @  %x, at @ %x\n",MEM_SIZE, MEM_SHARE);
      printk("Ring buffer size at log @  %x, at @ %x\n",MEM_SIZE, mem );
      iounmap((void *) mem);
      printk("Module has been removed\n");
    }
    voici la sortie du fichier /var/log/messages
    Sep 17 10:14:00 Xport-NT kernel: [ 924.658719]
    Sep 17 10:14:00 Xport-NT kernel: [ 924.658720]
    Sep 17 10:14:00 Xport-NT kernel: [ 924.658748] * Simple - REALLY simple memory mapping test.
    Sep 17 10:14:00 Xport-NT kernel: [ 924.658750]
    Sep 17 10:14:00 Xport-NT kernel: [ 924.658750]
    Sep 17 10:14:00 Xport-NT kernel: [ 924.658752] Ring buffer size at phys @ 1400000, at @ e0000000
    Sep 17 10:14:00 Xport-NT kernel: [ 924.658755] Ring buffer size at log @ 1400000, at @ f8bc0000
    Sep 17 10:14:22 Xport-NT kernel: [ 947.368431] Ring buffer size at phys @ 1400000, at @ e0000000
    Sep 17 10:14:22 Xport-NT kernel: [ 947.368435] Ring buffer size at log @ 1400000, at @ f8bc0000
    Sep 17 10:14:22 Xport-NT kernel: [ 947.368449] Module has been removed
    Sep 17 10:14:22 Xport-NT kernel: [ 947.368536] c01acf51
    Sep 17 10:14:22 Xport-NT kernel: [ 947.368545] Modules linked in: nvidia(P) binfmt_misc ppdev lp ipv6 acpi_cpufreq cpufreq_conservative cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table cpufreq_userspace dm_crypt dm_mod loop snd_hda_intel snd_pcm snd_seq snd_timer snd_seq_device snd i2c_i801 i2c_core parport_pc parport soundcore intel_agp agpgart snd_page_alloc button evdev ext3 jbd mbcache raid1 md_mod sg sr_mod sd_mod cdrom generic usbhid hid ff_memless jmicron ide_core ata_piix ata_generic ahci libata ehci_hcd r8169 scsi_mod floppy uhci_hcd usbcore thermal processor fan
    Sep 17 10:14:22 Xport-NT kernel: [ 947.368604] I-pipe domain Linux

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 309
    Billets dans le blog
    5
    Par défaut
    "mes" n'est pas alloué. Le problème vient peut être de là.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Décembre 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Décembre 2008
    Messages : 53
    Par défaut
    Merci, j'ai voulu aller trop vite c'était bien ça le problème. Le manque de recul ne fait parfois pas voir des choses évidentes.
    Encore merci.

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 309
    Billets dans le blog
    5
    Par défaut
    De rien.

    J'ajouterai que le man de memcpy indique qu'il vaut mieux utiliser memmove(); s'il y a chevauchement des mémoires src et dest. Si tu as l'intention d'allouer de grosses quantités de mémoire c'est peut être une option à considérer.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Décembre 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Décembre 2008
    Messages : 53
    Par défaut
    La mémoire maximum allouée sera de 50Mo, j'ai spécifié dans le fichier /boot/grub/menu.lst que la mémoire du système ne devait pas aller au dela de 7680Mo donc normalement il ne devrais pas y avoir de problème mais merci de la suggestion, je vais y penser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Kernel panic
    Par No Comment dans le forum Administration système
    Réponses: 2
    Dernier message: 30/10/2005, 15h41
  2. Kernel panic mount sata
    Par jean-jacques varvenne dans le forum Administration système
    Réponses: 2
    Dernier message: 27/05/2005, 21h19
  3. Kernel panic : vfs
    Par devmat dans le forum Administration système
    Réponses: 3
    Dernier message: 01/10/2004, 17h03
  4. Kernel Panic après ajout d'une nouvelle partition
    Par GLDavid dans le forum Administration système
    Réponses: 6
    Dernier message: 25/06/2004, 16h47
  5. Kernel panic
    Par GLDavid dans le forum Administration système
    Réponses: 5
    Dernier message: 12/03/2004, 22h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo