[Oberon] trap output problems

R. P. de Jong rdjong at mac.com
Fri Oct 30 17:14:52 CET 2015


Hi,
I am not familiar with ETH Oberon, but in “Project Oberon” i found a problem with the Trap procedure which may corrupt text in the Log viewer.

Looking into this at a little depth, my conclusion is as follows:

During trap processing, the text system is used to print a message. This generally requires a few small allocations by the text system.
However if the trap is caused by a heap overflow in the first place, then these further allocations have a probability to also fail …
Unfortunately, the text system is not immune to all traps generated in itself. 
For instance, a string could be appended successfully to a Text, but its notify message call to the corresponding TextViewer could fail (generate a trap).

I solved the problem for the time being by checking in the trap handler if there is still some space in the heap, otherwise i call Reset without printing a message.

Regards,
Roel de Jong



> On 29 Oct, 2015, at 22:22 , Peter Matthias <PeterMatthias at web.de> wrote:
> 
> Hi Jan,
> 
> Am 29.10.2015 um 16:52 schrieb Jan de Kruyf:
>> Hallo Peter,
>> 
>> > I suppose the best way would be to send me the source to reproduce
>> the text corruption fault. You also can use ARM and MIPS targets via
>> qemu to check the behaviour.
>> 
>> Here is a barebones module to demonstrate the trap printout problem.
>> 
>> There are 2 pointers, one initialized (S) and one uninitialized (T).
> 
> S is not a POINTER but a RECORD.
> 
>> You can compile and run it as is. it will trap and give 2 values to
>> compare against in the kernel log.
> 
> For RECORDS, the type descriptor address is being printed. I suppose the address is relative to the static base of the module.
> 
>> It looks to me that the problem is in the trap printing routine.
> 
> It might be better to show the elements of the record, however, the behavior is consistent with Native Oberon.
> 
> Regards,
> 	Peter
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon



More information about the Oberon mailing list