Violation d'accès à la mémoire lors de l'installation de bases de données
Lors de l'installation de la base de données postale américaine du module Universal Addressing sous Windows ou Linux, une erreur semblable à ce qui suit peut se produire :
Memory access violation.
COBOL error at 000000 in <path>\G1DBLOAD.acu
Ce problème est dû à une limitation dans une bibliothèque de logiciels tiers.
Il existe deux manières de contourner ce problème pour Windows et une seule pour Linux.
Solution Windows 1 : modifier les paramètres DEP
- Accédez à .
- Cliquez sur l'onglet Avancé.
- Dans la zone Performances, cliquez sur Paramètres.
- Cliquez sur l'onglet Prévention d'exécution des données.
- Effectuez l’une des opérations suivantes :
- Sélectionnez Activer la prévention d'exécution des données pour les programmes et les services Windows uniquement.
- Sélectionnez Activer la prévention d'exécution des données pour tous les programmes et les services, sauf ceux que je sélectionne, puis cliquez sur Ajouter et ajoutez wrun32.exe, dont l'emplacement est C:\Program Files\Common Files\Group1\Runtime. Maintenant, vous devriez trouver ACUCOBOL-GT 32-bit Runtime dans la liste.
- Cliquez sur OK.
Solution Windows 2 : définir USE_EXECUTABLE _MEMORY
Si vous ne souhaitez pas modifier vos paramètres DEP, vous pouvez à la place définir la variable d'environnement de niveau système USE_EXECUTABLE_MEMORY sur TRUE.
Solution Linux
Pour résoudre ce problème sous Linux, mettez à jour la configuration du noyau pour désactiver le NX bit (No eXecute) :
- Ouvrez une session en tant que super-utilisateur root.
- Modifiez /boot/grub/grub.conf.
- Ajoutez noexec=off à toutes les lignes d'option de noyau. Par exemple :
title Red Hat Enterprise Linux AS (2.4.21-15.ELsmp) root (hd0,1) kernel /boot/vmlinuz-2.4.21-15.ELsmp ro root=LABEL=/ noexec=off initrd /boot/initrd-2.4.21-15.ELsmp.img
- Redémarrez le système.