The memory allocation mechanism described at 26:00- 29:00 had a nasty bug which would free physical memory while active pointers were still pointing into it. The bug was hidden by the fact that on most early systems, either negative sbrk() calls were ignored, or else subsequent positive sbrk() (which is what the shell does on memory fault in the heap/stack) would just restore the contents of the previously freed chunk. I have found it while working at National Semiconductors in 1985, when some kernel developer thought it would be a good idea to scrub freed memory before reusing it...
The memory allocation mechanism described at 26:00- 29:00 had a nasty bug which would free physical memory while active pointers were still pointing into it.
The bug was hidden by the fact that on most early systems, either negative sbrk() calls were ignored, or else subsequent positive sbrk() (which is what the shell does on memory fault in the heap/stack) would just restore the contents of the previously freed chunk.
I have found it while working at National Semiconductors in 1985, when some kernel developer thought it would be a good idea to scrub freed memory before reusing it...
Really great keynote by Steve Bourne from BSDCan 2015.
Thanks for posting and sharing! Really engaging to listen to those who participated in the evolution of UNIX reminisce about their experiences.
Very cool! Enjoyed the historical view...
Very Very Cool, great detail.