Speicherzugriffsverletzung beim Installieren von Datenbanken

Beim Installieren der US-amerikanischen Postdatenbank des Universal Addressing-Moduls unter Windows oder Linux kann ein Fehler wie der folgende auftreten:

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

Dieses Problem wird durch eine Einschränkung der Bibliothek einer Drittanbietersoftware verursacht.

Für Windows gibt es zwei Problemumgehungen und für Linux eine.

Windows-Problemumgebung 1: Ändern der DEP-Einstellungen

  1. Navigieren Sie zu Systemsteuerung > System.
  2. Klicken Sie auf die Registerkarte Erweitert.
  3. Klicken Sie im Bereich „Leistung“ auf Einstellungen.
  4. Klicken Sie auf die Registerkarte Datenausführungsverhinderung.
  5. Führen Sie eine der folgenden Aktionen aus:
    • Wählen Sie DEP nur für wichtige Windows-Programme und -Dienste aktivieren aus.
    • Wählen Sie DEP für alle Programme und Dienste bis auf die von mir ausgewählten aktivieren aus, klicken Sie anschließend auf Hinzufügen und fügen Sie die Datei wrun32.exe hinzu, die sich unter C:\Program Files\Common Files\Group1\Runtime befindet. Nun müsste ACUCOBOL-GT 32-bit Runtime aufgeführt werden.
  6. Klicken Sie auf OK.

Windows-Problemumgehung 2: Legen Sie USE_EXECUTABLE _MEMORY fest

Wenn Sie Ihre DEP-Einstellungen nicht ändern möchten, können Sie stattdessen die Umgebungsvariable USE_EXECUTABLE_MEMORY auf Systemebene auf TRUE festlegen.

Linux-Problemumgehung

Zur Umgehung dieses Problems unter Linux müssen Sie die Kernel-Konfiguration aktualisieren, um das NX-Bit (NX = No eXecute) zu deaktivieren:

  1. Melden Sie sich als Root-Benutzer an.
  2. Bearbeiten Sie /boot/grub/grub.conf.
  3. Fügen Sie noexec=off zu allen Zeilen der Kernel-Optionen hinzu. Beispiel:
    
    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. Starten Sie das System neu.