abort and assert redux (was: Re: copyright notices)

John F Haugh II jfh at rpp386.cactus.org
Thu Dec 13 00:13:11 AEST 1990


In article <422 at bally.Bally.COM> jkimble at bally.bally.com (The Programmer Guy) writes:
>In article <18777 at rpp386.cactus.org> jfh at rpp386.cactus.org (John F. Haugh II) writes:
>>use the source, luke, cuz bo don't know shit.
          ^^^^^^
>
>A fitting quote from the unoffical USENET Posting Policy Guide:
>
># 10.  When in doubt, insult: If you forget the other rules, remember this
># one.  At some point during your wonderful career on USENET you will
># undoubtedly end up in a flame war with someone who is better than you.
># This person will expose your lies, tear apart your arguments, make you
># look generally like a bozo.  At this point, there's only one thing to
># do: insult the dirtbag!!!  "Oh yeah?  Well, you do strange things with
># vegetables."

Now, Jim, you have been asked to go check out that source code, just
like our dear friend Dave Burton over in IBM land.  The entire abort()
and assert() issue would have been resolved in one posting if the people
who are insisting abort() is well-defined and well-behaved would have
just READ THE SOURCE CODE.  I don't think telling you to go READ THE
SOURCE CODE is an insult any more than telling you to READ THE FUCKING
MANUAL is an insult.  However, quite clearly neither you nor Dave Burton
have done enough of either, because if you had you would realize that
the implementation and behavior of abort() varies from one release of
BSD and USG to the next, and quite widely between BSD and USG.

For example, on a USG system abort() is about equivalent to

abort ()
{
	kill (getpid (), SIGIOT);
}

while on a BSD system abort() is about equivalent to

abort ()
{
	kill (getpid (), SIGILL);
	signal (SIGILL, SIG_DFL);
	kill (getpid (), SIGILL);
}

Now, Dave insisted that assert() =always= exits or doesn't return,
yet from the manpage for a popular UNIX derivative, it says

	"it displays ... on the standard error file and aborts."

Checking /usr/include/assert.h reveals that it does this by calling
abort(), which says

	"abort can return control if the calling process is set
	 to catch or ignore the SIGIOT signal; see signal(2)".

Not only IS the behavior squirrely, it is DOCUMENTED in TFM as
being squirrely.

You were saying something about "exposing lies" and "tearing
apart arguments".  Please, try.  But first, go READ THE SOURCE
CODE and go READ THE FUCKING MANUAL.  You are arguing against
source code and documentation.
-- 
John F. Haugh II                             UUCP: ...!cs.utexas.edu!rpp386!jfh
Ma Bell: (512) 832-8832                           Domain: jfh at rpp386.cactus.org



More information about the Alt.sources.d mailing list