Multics > People > Stories
09 Mar 1995

Hodie Natus Est Radici Frater

 
Multics Close ⊗
Loading

Tom Van Vleck, Bernie Greenberg, Harry Quackenboss

Multicians Grady, Greenberg, Chang, Whitmore, Hunt in LISP class

Bernie Greenberg teaching LISP at CISL. Photo by THVV. Click for a larger view.

This is a story from 1976 or early 1977 that has gained some notoriety, even outside the Multics community, as the story of "that crazy Multics error message in Latin." The tale was somewhat distorted in the retelling: this version combines the recollections of three people who were directly involved.

The General Motors Multics site was installing the New Storage System (NSS) for the first time, so this was MR 4.0, first available in July 76. They were desperately out of disk space and wanted to install NSS as soon as possible to be able to use more disks and more channels. Field Engineering had installed more disk drives and increased the number of disk controllers and disk strings.

Harry writes:

"We started this exercise at late Friday evening, intending to have the new reconfigured system up by Saturday morning. By the time we had done a full tape backup, it was 3 AM or so. Then field engineering went through the process of recabling the disk configuration to install the new disk controllers and disks. We then installed the new version of Multics, including NSS -- now about 4 AM, Detroit time. By this time we were all pretty tired, so we made some small mistakes along the way, but got it installed about 5 or 6 AM.

The BOOT command produced the message

    HODIE NATUS EST RADICI FRATER
  

and would not produce a dump. I said 'anybody went to Roman Catholic school?' and Fred Zemmin spoke up. His translation was 'something about the root has a brother.'

We asked everyone including the field engineers to double check their work, & tried again with same result.

At about 6 or 7 AM Boston time (one hour ahead) I called THVV at home (woke him up) and I remember him distinctly to this day saying 'oh, that's Bernie's message which says today is born the brother of the root.' I remember THVV's explanation that this occurred as the OS was checking logical paths to the Root Logical volume.

With this, I asked the field engineers to check their work. They spent an hour or so scurrying about and then said to try it again. I never did learn what they changed, but when we re-tried it, the system came up and we turned over to GM for production."

The message does indeed mean "today unto the Root a brother is born." Bernie Greenberg says, "The intended reference was to the Christmas antiphon Hodie Christus natus est, Salvator apparuit, but, indeed, the Isaiah verse quoted by Handel (Messiah was never in my mind) and other places 'Unto us a child is born...&c' was in my mind." Bernie wrote the code that produced the error message: he's a fantastic musician and interested in Latin.

The code was in the BOS utility SSTN, which understood the AST and produced VTOCE names, invoked at recovery time. Bernie says: "The case was that the stack-oriented, recursive code in BOS (no stack! all done by hand!) found it had a brother pointer yet to process at the bottom of the tree when it was finished." This was some remarkable hair to have in the dump program, which had to be rock-solid reliable at crash time, and I (THVV) remember not feeling right about having this info in BOS, because it would be hard to keep synchronized with the running release, but the results were sure nice: the dump stack frames were labeled with correct segment names, even for things that didn't come off the boot tape. Remember BOS was written in Multics assembler (ALM) and ran in a non-PL/I environment, and if the AST declaration changed you had to do all kinds of extra processing to generate a new ALM include file from the PL/I include file, and then regenerate BOS DUMP.

THVV's early-morning guess at the cause of the problem was wrong, although it got the FEs to change something that fixed the problem; Bernie explains: "What had really happened was that the SST was not initialized because the system crashed too early, and it picked up a garbage pointer for the Root ASTE and picked up one of the eight words of -1 as a 'brother pointer', and said that. The real bug was not checking for 'SST not initialized.'" The code was in a "can't happen" case, which was why it was left in shipping code. The only way the message could come out was if there was a program bug, or if the hardware was broken (which it was).

04/26/93, Updated 02/17/95, 03/09/95


David Mery posted an interesting story about another Multics error message by Bernie on 14 Nov 2007: "Multics source reveals le jetteur des gazongues".