На самом деле пример из диссертации Шиперски не приводит к крэшу в ББ: если бы G создавала пойнтер типа P, то да присваивание p.x := 42 обрушило бы ББ. Но внутри WITH G на самом деле создает пойнтер типа P1 и присваивание работает без проблем. Правда после выхода из WITH поле p.x становится недоступным. Что происходит с p.x непонятно: либо после выхода из WITH соотв. память освобождается, либо происходит утечка памяти. Вполне возможно, что проблема порчи памяти в этом примере действительно существовала в предыдущих версиях Оберона, но похоже, что в ББ авторы постарались ее по крайней мере обезвредить.