Title | arena->serial is always 0 |
Status | closed |
Priority | nice |
Assigned user | Gareth Rees |
Organization | Ravenbrook |
Description | The Arena structure has a member "serial": typedef struct mps_arena_s { ... Serial serial; which is printed in various Describe functions, for example ArenaDescribe in arena.c: res = WriteF(stream, "} Arena $P ($U)\n", (WriteFP)arena, (WriteFU)arena->serial, NULL); but it is never assigned, so every arena has a serial of 0. |
Analysis | design.mps.arena.static.serial [1] says that "arenaSerial is a static Serial, containing the serial number of the next arena to be created. The serial of any existing arena is less than this." But in fact there's no such variable. What's going on here? Looking back in time, it seems that arenaSerial and the initialization code for the ->serial member was removed by pekka in change 21849 [2] (when he moved some of the Arena functionality into the Globals structure) but he didn't remove the member from the Arena class. It seems as though the removal of arenaSerial and the initialization code for arena->serial was deliberate, so the failure to remove the serial member from the arena structure (and the corresponding failure to update the design document and the Describe functions) was probably the oversight. It certainly doesn't make sense to have a serial number that's always 0. |
How found | inspection |
Evidence | [1] <https://info.ravenbrook.com/project/mps/master/design/arena/ >[2] < https://info.ravenbrook.com/infosys/cgi/perfbrowse.cgi?@describe+21849 > |
Observed in | 1.110.0 |
Created by | Gareth Rees |
Created on | 2013-03-08 23:04:01 |
Last modified by | Gareth Rees |
Last modified on | 2013-03-12 15:11:22 |
History | 2013-03-08 GDR Created. |
Change | Effect | Date | User | Description |
---|---|---|---|---|
181121 | closed | 2013-03-12 15:11:22 | Gareth Rees | Restore arena serial numbers. |