Никак не соображу как локализовать ошибку. Сбивает с толку факт, что в 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. Причём, именно на рекурсивных процедурах. Переполнение стека?