GNU/Linux >> Tutoriels Linux >  >> Linux

Comment piéger les accès mémoire non alignés ?

ARM Linux maintient une liste de gestionnaire d'alignement exceptions,

$ cat /proc/cpu/alignment 
User:           0
System:         0
Skipped:        0
Half:           0
Word:           0
DWord:          0
Multi:          0
User faults:    0 (ignored)

Il n'est actif qu'avec procfs , mais il est difficile d'imaginer un système sans procfs . Le code spécifique qui gère cela se trouve dans alignement.c. Vous pouvez utiliser echo 3 > /proc/cpu/alignment avoir Linux fixup l'instruction et fournir quelques dmesg production. Généralement, la gestion des accès non alignés via l'émulation est très inefficace. Il vaut mieux corriger le code. Le signal option avec un débogueur attaché devrait donner un indice sur la source de l'exception.

Lisez le manuel.;-)


Linux peut faire le correctif pour vous ou vous avertir de l'accès.

Vous pouvez activer le comportement dans /proc/cpu/alignment, voir http://www.mjmwired.net/kernel/Documentation/arm/mem_alignment pour une explication des différentes valeurs.

0 - Do nothing (default behavior)
1 - Warning in kernel-log with PC and Memory-Address printed.
2 - Fixup error
3 - Warn and Fixup
4 - Send a SIGBUS to the process
5 - Send SIGBUS and output Warning

Linux
  1. Comment accéder à phpMyAdmin

  2. Comment auditer l'accès aux fichiers sous Linux

  3. Comment accéder (si possible) à l'espace noyau depuis l'espace utilisateur ?

  4. Comment limiter l'utilisation de la mémoire des applications ?

  5. Comment accéder à Webmin ?

Comment effacer la mémoire d'échange sous Linux

Comment accéder aux paramètres du micrologiciel UEFI dans Windows 10

Comment désactiver définitivement Swap sous Linux

Comment accéder à phpMyAdmin dans cPanel ?

Comment fonctionne la mémoire d'échange sous Linux ?

Comment profiler l'utilisation de la mémoire ?