Никак не соображу как локализовать ошибку. Сбивает с толку факт, что в Windows компиляция происходит успешно. Наверно, модуль Kernel был неполноценно перенесён на Линукс.
Вот такой код сбоит компиляцию в Линуксе (основан на модуле Files):
Код:
MODULE TestOop2;
   IMPORT Kernel;
   
   CONST copyleft* = "Copyleft";
  
   TYPE
      Name* = ARRAY 256 OF CHAR;
      Type* = ARRAY 16 OF CHAR;
      FileInfo* = POINTER TO RECORD
         next*: FileInfo;
         name*: Name;
         length*: INTEGER;
         type*: Type;
         modified*: RECORD year*, month*, day*, hour*, minute*, second*: INTEGER END;
         attr*: SET
      END;
      LocInfo* = POINTER TO RECORD
         next*: LocInfo;
         name*: Name;
         attr*: SET;
      END;
      Data* = POINTER TO ABSTRACT RECORD
         init: BOOLEAN;
         f1: INTEGER
      END;
      Locator* = POINTER TO ABSTRACT RECORD
      END;
      File* = POINTER TO ABSTRACT RECORD
         type-: Type;
         (*init: BOOLEAN;*)
      END;
      Rec = POINTER TO RECORD END;
   VAR
      (*d: Data;*)
      v, v2, v3, v4, v5, v6: ARRAY 1 OF INTEGER;
   PROCEDURE (s: Data) Init*, NEW;
   BEGIN
      ASSERT(s.f1 # 0, 20);
      s.init := TRUE;
      s.f1 := 100; 
   END Init;
   PROCEDURE (l: Locator) This* (IN path: ARRAY OF CHAR): Locator, NEW, ABSTRACT;
  
   PROCEDURE (f: File) InitType* (type: Type), NEW;
   BEGIN
      f.type := type$
   END InitType;
   PROCEDURE (f: File) Length* (): INTEGER, NEW, ABSTRACT;
   (*PROCEDURE (f: File) Length* (): INTEGER, NEW; BEGIN RETURN 1 END Length;*)
   (*PROCEDURE (f: File) Length2* (): INTEGER, NEW, ABSTRACT;*)
END TestOop2.
Практически любое изменение в объявлении символов для экспорта или в теле процедур может привести к исчезновению сбоя. Есть ощущение, что есть зависимость от размера данных и количества экспортируемых символов от наличия сбоя.
Кроме того, мне удалось адаптировать модуль StdDebug  для консольного режима и теперь я могу немнгого более подробно знать об ошибке. Но это пока не помогло в выявлении ошибки.
Код:
Trying to compile module TestOop2 ...
illegal memory read (ad = B7362DFAH)
 CDevCPV486.procs   [00006A81H] 
   .ch   SHORTCHAR   "�"
   .end   INTEGER   163345872
   .i   INTEGER   -1220564312
   .j   INTEGER   0
   .n   CDevCPT.Node   IllegalAddress0000003CH
   .name   CDevCPT.Name   "�x56��d"   ...
"�x56��d", 0X, 0X, "����", 1X, "56��ۼ", 9X, 0X, 0X, 0X, 0X, "��?�", 1CX, "���", 0CX, "���", 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, "��?�", 1CX, "���,���F�7�", 0X, 0X, 0X, 0X, 10X, 90X, "�", 9X, 0X, 0X, 0X, 0FX, "��?�", 1CX, "���H���F�7��", 8FX, "�", 9X, 90X, 8FX, "�", 9X, 0X, 0X, 0X, 0FX, "��?�", 1CX, "���d���F�7�0", 8FX, "�", 9X, 10X, 8FX, "�", 9X, 0X, 0X, 0X, 0FX, "��?�", 1CX, "���", 80X, "���F�7��", 8EX, "�", 9X, 90X, 8EX, "�", 9X, 0X, 0X, 0X, 0FX, "��?�", 1CX, "���", 9CX, "���F�7�0", 8EX, "�", 9X, 10X, 8EX, "�", 9X, 0X, 0X, 0X, 0FX, "��?�", 1CX, "����F�7��", 8DX, "�", 9X, 90X, 8DX, "�", 9X, "���", 0FX, "��?�", 1CX, "�������F�7�0", 8DX, "�", 9X, 0X, 0X, 0X, 0X, "��7���?�", 1CX, "�������F�7"   
   .obj   CDevCPT.Object   NIL
   .proc   CDevCPT.Object   NIL
   .useFpu   BOOLEAN   Undefined238
 CDevCPV486.Module   [00006F7AH] 
   .aAd   INTEGER   163352240
   .end   INTEGER   0
   .n   CDevCPT.Node   NIL
   .name   CDevCPT.Name   "$$"   ...
"$$", 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, "h�", 8BX, "6�0", 8EX, "�", 9X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, "�", 0X, 9X, 0X, 9CX, "�", 8BX, "6��", 8DX, "�", 9X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, "������", 8BX, "6�0", 8DX, "�", 9X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, "0v�", 9X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 80X, "O", 4X, "�", 8BX, "6��u�", 9X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, 0X, " ��� ���m", 8DX, "6�Pu�", 9X, 80X, "m�", 9X, 1X, 3X, 7FX, 0X   
   .obj   CDevCPT.Object   NIL
   .p   CDevCPT.Object   NIL
   .prog   CDevCPT.Node   [09BC9D10H] 
   .rAd   INTEGER   -1221162053
   .typ   CDevCPT.Struct   NIL
   .useFpu   BOOLEAN   FALSE
Что интересно, что сбой происходит если подключать модуль Kernel. Если же его не подключать, то всё скомпилируется без сбоя. Да и, вообще, сбой происходит именно в модулях с низкоуровневыми операциями. Во всех сбоях ловушка указывает на модуль CDevCPV486. Причём, именно на рекурсивных процедурах. Переполнение стека?