Violación de acceso a la memoria al instalar bases de datos

Cuando se instala la base de datos postales de Estados Unidos del módulo Universal Addressing en Windows o Linux puede aparecer un mensaje de error similar al siguiente:

Memory access violation.
COBOL error at 000000 in <path>\G1DBLOAD.acu

Este problema se debe a una limitación en una biblioteca de software de terceros.

Existen dos soluciones para Windows y una para Linux.

Solución 1 para Windows: modificar la configuración de DEP

  1. Acceda a Panel de control > Sistema.
  2. Haga clic en la ficha Opciones avanzadas.
  3. En el sector Rendimiento, haga clic en Configuración.
  4. Haga clic en la ficha Prevención de ejecución de datos.
  5. Realice una de estas acciones:
    • Seleccione la opción Activar DEP solo para los programas y servicios de Windows esenciales.
    • Seleccione Activar DEP para todos los programas y servicios excepto los que seleccione, haga clic en Agregar y agregue wrun32.exe ubicado en C:\Program Files\Common Files\Group1\Runtime. Observará que en la lista aparece ACUCOBOL-GT 32-bit Runtime.
  6. Haga clic en Aceptar.

Solución 2 para Windows: establecer USE_EXECUTABLE _MEMORY

Si no desea modificar los ajustes de DEP, puede establecer la variable del entorno de nivel de sistema USE_EXECUTABLE_MEMORY en TRUE.

Solución para Linux

Para solucionar este problema en Linux, actualice la configuración del kernel (núcleo) para deshabilitar el bit NX (No eXecute):

  1. Inicie sesión como usuario raíz (root).
  2. Edite /boot/grub/grub.conf.
  3. Agregue noexec=off a todas las líneas de opción de kernel. Por ejemplo:
    
    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. Reinicie el sistema.