🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.folklore.computers
Article #623906

Re: Flying crisps, redux

#623906
From: Bob Eager
Date: Thu, 07 Jun 2018 21:30
77 lines
5240 bytes
On Thu, 07 Jun 2018 12:03:52 +0000, Huge wrote:

> What's the most "interesting" project you ever worked on, and why?

Not so much a project as a tricky problem and fix.

Once the University of <redacted> had moved to using <redacted homebrew 
operating system>, it was enjoying a rolling MTBF averaging about 2000 
hours over a 13 week period. This was much better than the 20 hours we 
had been getting from <previous redacted operating system>. People were 
very happy.

And then one day it all began to fall apart. The machine just stopped. No 
crash, nothing. The engineer's panel indicated that the microcode had 
halted. We re-IPLed the system, and an hour or two later it stopped 
again. Eventually we called the engineers, and they ran tests. Lots of 
them. They pronounced that there was nothing wrong.

Then the 'crashes' stopped, for a couple of weeks. Then they started 
again. We couldn't get a handle on what was wrong at all. It was 
eventually decided that, the next time it happened, I should use the 
engineer's panel, for as long as it took, to investigate the state of the 
machine. In the event, I simply dumped out all the target machine 
registers, and the microcode PC.

Our engineers obligingly left a microcode training manual lying around, 
together with a microfiche listing of the microcode. Oh, and some circuit 
diagrams. I retired to a darkened room for much of that day; and the 
next. Eventually I emerged with the reason for the crashes. Without going 
into too much technical detail, it seemed that the microcode and the 
hardware handed off tasks to each other; in particular, a part of the 
hardware called the 'scheduler' was responsible for validating the type 
field in the descriptor register during the execution of any instruction 
that used a descriptor to access an operand. Any invalid type was 
trapped, and sent back to the microcode to force an exception (known as a 
'contingency'). All other type values were considered valid, and passed 
back to the microcode to be used in accessing a jump table, thence 
invoking the right bit of microcode for that descriptor type.

So, what was going wrong? It turned out that there was what can only be 
described as a hardware design error. The scheduler didn't detect one 
particular invalid type code, so it handed it back to the microcode, 
which accessed the jump table with it. This of course accessed an entry 
marked 'can never happen', and the microcode halted. We later discovered 
that a physicist's errant FORTRAN program was overwriting a descriptor, 
and generating the bad type value. If the machine stopped, he just 
submitted the job again until he got fed up and went off for a week or 
two. Then he tried again, never noticing the causal connection.

We contacted <redacted manufacturer>, but we never seemed to reach anyone 
who either understood what the problem was, or had the power or 
inclination to get it fixed (which would not have been a quick job, in 
any case).

So I decided I had better fix this another way. Back to the microcode 
listing. I found an empty patch area, and hand assembled a new bit of 
microcode which I linked to the right jump table entry. All this did was 
generate a 'descriptor error' contingency with a hitherto unused subtype 
code. I then wrote a tool to extract the microcode from the system disk, 
patch it, and put it back again. We IPLed the system, and tested it (by 
this time I had a test program). Success - it correctly triggered the new 
contingency and the microcode didn't halt!

The only thing left to do was to modify the various components of the 
operating system to do the right thing, culminating in a change to the 
FORTRAN run-time system to generate a suitable message. That only took me 
a few minutes.

We had no more microcode halts and the users were happy. 

(my website has the un-redacted version)

-- 
Using UNIX since v6 (1975)...

Use the BIG mirror service in the UK:
 http://www.mirrorservice.org
Technical Details
Message-ID: <fntmf3FingjU7@mid.individual.net>
Path: mbox-mo1.pugleaf.net!f20-v6ni3784itd.0!nntp.google.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!weretis.net!feeder6.news.weretis.net!feeder4.news.weretis.net!news.unit0.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
References: <fnsl98Fidl6U1@mid.individual.net>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a24:455c:: with SMTP id y89-v6mr1882352ita.0.1528407013358;        Thu, 07 Jun 2018 14:30:13 -0700 (PDT)
X-BeenThere: alt.folklore.computers@googlegroups.com
Received: by 2002:a6b:a008:: with SMTP id j8-v6ls497864ioe.0.gmail; Thu, 07 Jun 2018 14:30:12 -0700 (PDT)
X-Received: by 2002:a6b:c0c2:: with SMTP id q185-v6mr1645844iof.134.1528407012742;        Thu, 07 Jun 2018 14:30:12 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!f20-v6ni3784itd.0!nntp.google.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!weretis.net!feeder6.news.weretis.net!feeder4.news.weretis.net!news.unit0.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: Bob Eager <news...@eager.cx>
Newsgroups: alt.folklore.computers
Subject: Re: Flying crisps, redux
Date: 7 Jun 2018 21:30:11 GMT
Lines: 77
Message-ID: <fntmf3FingjU7@mid.individual.net>
References: <fnsl98Fidl6U1@mid.individual.net>
Mime-Version: 1.0
X-Trace: individual.net N+Yusx4lJ8KecgOpbWP3jgX/Ozf4Y9Z6l8Vv5+3j7+cuInHQm6
Cancel-Lock: sha1:DdvgHUbFzicwbpu9Xo/LqJNa/S0=
User-Agent: Pan/0.141 (Tarzan's Death; 168b179 git.gnome.org/pan2)
Bytes: 4837
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit