[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