[Oberon] SystemV- Heap + Module Space
andreas_pirklbauer at yahoo.com
Tue Jan 1 19:16:02 CET 2019
> As the added code decreases AllocPtr, the probablitity that subsequent module loads overwrite
> still referenced code increases. I assume the freeze is not caused by the added lines per se, but
> rather that you freed some modules that should not be freed.
That’s exactly why the system freezes sometimes - because module unloading is *inherently*
unsafe in FPGA Oberon: the system becomes unstable the very moment another module
loaded later overwrites a previously released module block *and* other loaded modules
still refer to either its type descriptors or its procedures.
The only reason why the system doesn’t freeze more often after module unloading is
simply because those “empty blocks” don’t get always re-used and FPGA Oberon
(in most cases) just keeps adding modules at the end of the module list. And that’s
just about the worst possible way to keep a system “sort of stable”...
So those lines put the finger on this wound - which is quite real.
On a system that fully implements "safe module unloading", the added lines of code
are of course completely safe as well - FPGA Oberon just isn’t such a system.
More information about the Oberon