6. Memory overwrite detection#

JEVEUX dynamically allocates each memory area associated with the value segments during the first request. The various value segments associated with the objects are surrounded by 4 integers in front and 4 in the back. These integers allow you to store state and status, identifier and class, and an offset to manage types longer than the addressing unit.

Overwriting integers located around the segment causes the identity of the object associated with the value segment to be lost. Such an overwrite is generally detected when the contents of the object are written to disk and not when the contents of the object are overfilled. It results in one of the following error messages:

<S><JJLIRS> <DNT_cnbcleoaehlnkgigapnhjeaojmgljfic AMONT POSSIBLE ADRESSE > Nnnnn

In this case we have overwritten one of the integers in front of the value segment.

<S><JJLIRS> <DNT_doolpjeinhokkcgiohkfpgkcfmoojfdf AVAL POSSIBLE ADRESSE > Nnnnn

In this case we have overwritten one of the integers located behind the value segment.

Rule of use:

The developer then has the routine JXVERI to instrument his code.

This routine checks the integrity of values on both sides of the value segment and can signal the breaking point. It also detects an incursion outside the legal memory zone. It is possible to implement at a lower cost in the DEBUT or POURSUITE command the call to this subroutine before each command, which makes it possible to determine which command is overwriting. By instrumentating the routines associated with the command, the developer can then proceed by dichotomy to determine the erroneous routine or instructions.

Overwriting can also be less significant and only affect one word in front of or behind the value segment, as is the case when you make a clue error in table \(Z?\). The content of the use or the status of the value segment is then affected, this information can be obtained by consulting the result of the impressions of the distribution in memory by the routine JEIMPM.