[TUHS] history of virtual address space
Clem Cole via TUHS
tuhs at tuhs.org
Wed Jan 21 09:07:15 AEST 2026
below
On Mon, Jan 19, 2026 at 7:05 PM Warner Losh via TUHS <tuhs at tuhs.org> wrote:
>
> 4.2BSD on the Vax dereferencing 0 would seg fault.
As the default was an optional setup that allowed the previous(4.1)
behaviour.
> I'm not sure when this started.
4.2BSD was the first time it was the default.
> I am sure that System V or 32V on the Vax dereferencing 0 gave 0.
Yes, the original Vax kernel from BSD inherited that behaviour from 32/V -
more in a minute.
> There were many USENET threads about this in the mid 80s.
>
Exactly. IMO, the worst offender was the V7 Bourne shell implementation;
the way it managed its heap depended on it. By that time, ports of Unix
were available on other ISPs besides the PDP-11. And many people started
to trip over the problem.
At Berkeley, there was much debate, and everyone agreed it was a sin. In
fact its #2 in Henry's famous list of the ten commandments:
Thou shalt not follow the NULL pointer
<http://www.eskimo.com/~scs/C-faq/s5.html>, for chaos and madness await
thee at its end.
The feeling was if we protected page zero, then you could get a page fault,
and we could start fixing utilities. It was interesting when you found one
(I remember stumbling it one in the Rand MH mail system). But the problem
was that, by this time frame, a large body of C code had begun to emerge
that people found useful, but had this hidden flaw.
So, with one of the early pre-4.2 releases (4.1 A/B/C), it could be
configured as an option. I ran the CAD Vaxen with it turned on as soon as
we had a system that could support it. By the time of the full release,
4.2BSD had protected page 0.
More information about the TUHS
mailing list