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

  1. Accédez à Panneau de configuration > Système.
  2. Cliquez sur l'onglet Avancé.
  3. Dans la zone Performances, cliquez sur Paramètres.
  4. Cliquez sur l'onglet Prévention d'exécution des données.
  5. Procédez de l’une des façons 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.
  6. 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) :

  1. Ouvrez une session en tant que super-utilisateur root.
  2. Modifiez /boot/grub/grub.conf.
  3. 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
    				
  4. Redémarrez le système.