[TUHS] I can't drive 55: "GOTO considered harmful" 55thanniversary

Dave Horsfall dave at horsfall.org
Mon Mar 13 13:09:47 AEST 2023


[ Followups to COFF, as this is rapidly becoming a Unix tutorial ]

On Sun, 12 Mar 2023, Warner Losh wrote:

> > How often would you call setjmp()/longjmp()?
> 
> Cheap enough for occasional error handling, way too expensive for a 
> generic exception handling system... processors with lots of registers 
> were more of a problem...

I've only ever used it when knee-deep in procedure calls, and I needed to 
parachute back to the main loop when things went pear-shaped[*]; failure 
was not an option :-)


On Sun, 12 Mar 2023, Steffen Nurpmeso wrote:

>  |> How often would you call setjmp()/longjmp()
> 
> Only on a Sunday!

Sometimes I did my best work outside of M-F 9-5 :-)

> I never used these myself of free will.
> 
> (And never regulary at all until i took maintainership of a BSD Mail 
> clone, which is the examplary piece of software to show that BSD signal 
> handling and SA_RESTART are a terrible misconception, especially as soon 
> as the software gets larger. .. In my opinion. Once it was able to run 
> "24/6" i counted the number of system calls necessary for signal block / 
> release and installation / removal over a week, and i think the number 
> was way in the six digits.  System calls them all!  I should have taken 
> the OpenBSD variant instead, and simply take over what "was good", and 
> it would be much, much better by now.  They did the work and reduced the 
> very messy part to two exactly locatable system call points of interest.  
> (I looked i guess 2014-<2017.)  A very bad decision. But if i live long 
> enough i will make it, and another one i would really long for.)

I've never liked the concept of signals, especially for IPC; it's akin to 
being hit over the head with a lump of 4x2.  Hardware interrupts were one 
thing, but it seemed to be a bit brutal in software.

And no, I don't have an elegant solution short of message-passing.

Heck, I still have nightmares about BSDi's "fdump" program using signals
to coordinate its various children, and completely screwing up my
backups as a result...

> Even on a x86(-32) i have gnashed with my teeth.  And that with
> a Cyrix from 1996 .. and not to think about i386 or even earlier
> processors with so few memory and speed.
> I remember _for sure_ looking at the jmpbuf structure by then, and
> the assembler files (sheer magic by then) and x86 instructions.

You can read X86 assembler?  I can only do that after a few stiff
drinks...  I did buy the book (in order to debug a floating bug defect
in the optimiser -- hey, let's optimise this instruction right out! -- and
I've never trusted optimisers since).

[*]
Cue the saying about it being impossible to design a foolproof system.

-- Dave, the iconoclast


More information about the TUHS mailing list