Showing posts with label error. Show all posts
Showing posts with label error. Show all posts

Saturday, April 25, 2009

More Funny Applications Errors From Linux, Unix And Elsewhere

Hey There,

Well, the sunny breezy weather forecast out here in Chicago has turned out to be nothing but oppressive humidity (which almost never happens ;) so I've spent most of my day seeing spots. Thankfully, around these parts, the fall, winter and spring take up a lot more of the year than the summer (or maybe it's just that the winter gets so freezing cold that it seems longer. Whatever it is; I love it and it makes this misery bearable ;)

I ran into another "bad slab magic error" today, installing an older version of RedHat Linux on a freebie junk-pc that a neighbor decided to punt to the curb and it was hard not to crack a smile (I don't know why that error always makes me laugh. It just sounds really really goofy to me, and I love goofy humor :)

Anyway, that error message got me thinking that I haven't scoured the net for funny error messages in a while, but, thankfully, folks are still posting them like they're going out of style (I think, in fact, that the opposite is true and they have yet to come into their own ;)

This batch of funny application error messages below was found on the Waikato Linux Users Group Site, and they deserve all the credit for either collecting these gems or (I'm not here to judge) making them up. If it sounds reasonably credible (which most incomprehensible error messages do, nowadays), I'll put aside whatever I'm doing to chuckle for a moment or to. Even if I'm only chuckling on the inside ;)

They (Reader's Digest ;) say that laughter is the best medicine. If that's true, this page will do you some good. If you've gone and severed a limb, you may need to go see a doctor. That's one of the ailments they almost never misdiagnose and, although they can cure it, there's rarely any laughter involved.

It's a backward, upside-down, topsy-turvy world ;)

Cheers,



Messages reported by applications and OperatingSystems


These are some of the funny, sarcastic, or just plain stupid error messages that you might see. If you are looking for "proper" error messages from applications, and how to resolve them, look at ApplicationErrorMessages.


Keyboard not found. Hit F1 to continue


Many BIOSes will report this error if a keyboard is not found at boot time.


lp on fire


The Linux lp# driver says this when your printer signals an error, but doesn't signal which error. Usually this means the printer is offline. (This message was copied from much earlier line printer daemons from Unixes of old.)


Update: Kernel 2.4.20 contains the following change from 2.4.19:



diff -urN linux-2.4.19/drivers/usb/printer.c
linux-2.4.20/drivers/usb/printer.c
--- linux-2.4.19/drivers/usb/printer.c Fri Aug 2 17:39:45 2002
+++ linux-2.4.20/drivers/usb/printer.c Thu Nov 28 15:53:14 2002
@@ -257,7 +257,7 @@
* Get and print printer errors.
*/

-static char *usblp_messages[] = { "ok", "out of paper", "off-line", "on fire" };
+static char *usblp_messages[] = { "ok", "out of paper", "off-line", "unknown error" };

Q276304 - Error Message: Your Password Must Be at Least 18770 Characters and Cannot Repeat Any of Your Previous 30689 Passwords


A Microsoft Windows error message as reported by comp.risks 21.37


You don't exist. Go away.


This message appears for certain unix programs when an entry can't be found for you in /etc/passwd (or these days, via PAM). This might be because you've not logged in via login(1) (this can happen if /etc/inittab specifies a program that doesn't log you in, instead of getty(8)), if your machine can't retrieve the data from the network (if you are using NIS or LDAP or some other network user administration system) or if you've made a mistake editing /etc/passwd (or friends).


Curse on you, wizard, before you recurse on me.


bibtex(1) style files use an undocumented language called BST (or that's the file extenstion, which is the closest it has to a name). In this language recursion is prohibited, and this is the message you get if you try it.


I refuse to debug myself!


If you tell GDB to try to attach to its own process. (It can't run it and breakpoint it and the same time.)


The devil is in the details: zero number of heads or sectors


Seen from the mdir(1) command.


MicrosoftWindows MSI Installer


Software Installation encountered an unexpected error while reading from the MSI file \\mlc1\deploy\FireFox-1.0.1-enUS.msi.


The error was not serious enough to justify halting the operation.


The following error was encountered: The operation completed successfully.



sudo(1)


If the insults flag is set in /etc/sudoers, sudo(1) will return one of the following errors when an invalid password is entered:


  • Just what do you think you're doing Dave?

  • It can only be attributed to human error.

  • That's something I cannot allow to happen.

  • My mind is going. I can feel it.

  • Sorry about this, I know it's a bit silly.

  • Take a stress pill and think things over.

  • This mission is too important for me to allow you to jeopardize it.

  • I feel much better now.

  • Wrong! You cheating scum!

  • No soap, honkie-lips.

  • Where did you learn to type?

  • Are you on drugs?

  • My pet ferret can type better than you!

  • You type like i drive.

  • Do you think like you type?

  • Your mind just hasn't been the same since the electro-shock, has it?

  • Maybe if you used more than just two fingers...

  • BOB says: You seem to have forgotten your passwd, enter another!

  • stty: unknown mode: doofus

  • I can't hear you -- I'm using the scrambler.

  • The more you drive -- the dumber you get.

  • Listen, burrito brains, I don't have time to listen to this trash.

  • I've seen penguins that can type better than that.

  • Have you considered trying to match wits with a rutabaga?

  • You speak an infinite deal of nothing

  • You silly, twisted boy you.

  • He has fallen in the water!

  • We'll all be murdered in our beds!

  • You can't come in. Our tiger has got flu

  • I don't wish to know that.

  • What, what, what, what, what, what, what, what, what, what?

  • You can't get the wood, you know.

  • You'll starve!

  • ... and it used to be so popular...

  • Pauses for audience applause, not a sausage

  • Hold it up to the light --- not a brain in sight!

  • Have a gorilla...

  • There must be cure for it!

  • There's a lot of it about, you know.

  • You do that again and see what happens...

  • Ying Tong Iddle I Po

  • Harm can come to a young lad like that!

  • And with that remarks folks, the case of the Crown vs yourself was proven.

  • Speak English you fool --- there are no subtitles in this scene.

  • You gotta go owwwww!

  • I have been called worse.

  • It's only your word against mine.

  • I think ... err ... I think ... I think I'll go home


(Taken from ins_*.h in the source for sudo 1.6.6)





, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Tuesday, December 9, 2008

Unix And Linux PDF Telnet Curiosity - When HTTP Error Pages Don't Attack!

Hey There,

For this post, I spent a bunch of time goofing around with Telnetting to port 80 to try and force the binary modes (-8, -L), and some combination of those and the "no-escape" clause (...I mean, flag ;) and encountered terrible frustration. As odd as it may seem, downloading binary files from servers that won't serve anything but ASCII over Telnet can make it very hard to get the original product back (I've got a few half-done and I'm convinced that it's all very sensible and, if I find all the places I need to pad the 8th bit, with a ^M - or null bit -, this will all work out). Once I get done doing the grunt work, it should be easy to script. Knock three times on wood...

Just as a for instance, here's a chunk of the regular binary PDF:

%PDF-1.5^M

and here's a chunk of the telnet-to-port-80 ASCII version of the same file:

%PDF-1.5

Now, the PDF specification says, very strictly, that the PDF begins with the tag %PDF-VersionNumber and ends with %%EOF. Simple enough. It's those darn eighth bits that muck everything up. Again, as above, you can try any combination of the appropriate flags to try and force binary Telnet and ignore escapes. The escape-ignoring works just fine, but, unfortunately, the other host has to accept your request to do a binary Telnet transfer and that's were you get screwed. Until you figure out how to massage the output and pad all the necessary bits. I have a feeling this will all work out better when I use Octal Dump (od) to parse the received file. If you're curious, check our previous post on converting between octal and ASCII with Perl.

Anyway, to wrap up, here's one of the nicest little error messages I've ever come across. I got it when I accidentally ran the following code:

(echo "GET /pdf/Mailing-Lists/FreeBSD/current/2006-03/index.html HTTP/1.1";echo "Host: unix.derkeiler.com";echo;sleep 2)|telnet unix.derkeiler.com 80 |sed -e '1,/^[ \t]*$/d'

instead of using the path to the specific PDF file. Here's the link to the actual java-scripted version of the error page, which is much funnier, as the text comes out at a pace that indicates truly deep sorrow.

Hope you enjoy it. Yay. Errors are FUN again ;)

Cheers,



"I am so sorry, but I can't find the Page you've requested.",
"It's possible that you entered the address incorrectly.",
"If you did enter the address correctly, then it must be my fault.",
"I am really, really sorry, but I've tried everything I know to find it.",
"Nothing helped.",
"I am really depressed about this.",
"You see, I'm just a web server...",
"...here I am, brain the size of the universe, trying to serve you a simple web page...",
"And then it doesn't even exist!",
"Where does that leave me?!",
"I mean, I don't even know you.",
"How should I know what you wanted from me?",
"You honestly think I can 'guess' what someone I don't even 'know' wants to find here?",
"",
"Maybe I should introduce myself... my name is Marvin.",
"But then again, what is the use of intruducing myself?",
"You can't tell me your name, because you are in some far off place, sitting in front of your computer.",
"And that makes me feel lonely.",
"Do you know what that is like?",
"",
"...sigh...",
"",
"Man, I am so depressed I could just cry.",
"And then where would we be, I ask you?",
"It's not pretty when a web server cries.",
"And where do you get off telling me what to show anyway?",
"I'm just a web server...",
"...and possibly a manic depressive one at that...",
"So why does that give you the right to tell me what to do?",
"Huh?",
"",
"I am so depressed...",
"I think I'll crawl off into the trash can and decompose.",
"I mean, I'm gonna be obsolete in what, two weeks anyway?",
"What kind of a life is that?",
"Two effing weeks...",
"...and then I'll be replaced by a .01 release, that thinks it's God's gift to web servers,",
"just because it doesn't have some tiddly little security hole with its HTTP POST implementation,",
"or something like that.",
"",
"I'm really sorry to burden you with all this,",
"I mean, it's not your job to listen to my problems,",
"and I guess it is my job to go and fetch web pages for you.",
"But I couldn't get this one.",
"I am so sorry.",
"Believe me!",
"",
"Maybe I could interest you in another page?",
"There are a lot out there that are pretty neat, they say,",
"although none of them were put on 'my' server, of course.",
"Figures, huh?",
"That makes me depressed too, since I have to serve them, all day and all night long.",
"Two weeks of information overload, and then *pffftt*, consigned to the trash.",
"Again I ask you, what kind of a life is that?",
"",
"Now, please let me sulk alone.",
"",
"",
"",
"",
"I am so depressed.",
"",
"",
"",
"",
"",
"",
"",
"<connection terminated>"




, Mike




Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Saturday, August 30, 2008

More Funny Unix, Linux and Mainframe Error Messages

Hey again,

Trolling the net some more, I found a whole ton of funny Unix, Linux, mainframe, compiler, VAX, VMS, etc, error messages and I think we have enough material to span two posts here. So, in effect, today's post is also a "live test" of how long a blogspot posting can be. If it overruns, and the bottom gets clipped, you can get the material from its source at TMK.com.

WASTE OF TIME SAVER: ???? I'm starting to sound like these messages ;) Just as a heads up for anyone who visits the source listed above, you'll note that the string of emails they have posted there list the base href of this string of funny errors as http://www.oraclehumor.com/TextIndex/HumorText/errors.txt. I didn't include this as a hypertext link because it just goes to a placeholder page (I'm sure it was something else in its day ;)

I hope you enjoy this copious list of errors. You may recognize a few from our older post on Linux and Unix error messages (mostly the ones near the top), but I've read them all and can guarantee you plenty of fresh material (insofar as it's dated and, of course, only considered fresh in the context of this blog, since these errors were discovered and sent back and forth a while ago.... )

As usual, I've "modified" any and all swear words, to keep the "Safe Search" folk happy. I also removed the email footers and headers from the material. It helped save on space (this post is humungous - over 700 lines - without them), but you can check all that out, again, at the computer error messages list.

Enjoy, and keep smiling. It looks good on ya ;) ...For the record, my favorite is the very last one :)

-------------------------------------------------------------------------

From Version 7 UNIX: "Values of B will give rise to dom."

(no, I don't know what it meant (or if it still exists!)
but it had something to do with removing a directory with
a name beginning with '.'.)
--

----------------------------------------------------------------------

Actually, my all-time favorite is:

FATAL system error #nnnn
CAUSE: We should never get here!

----------------------------------------------------------------------

my favorite happened while i was transfering a file from one
machine to another. after about five minutes the machine still
hasn't copied the file and responds with....

OHHHH.... I give up
>
>Core dumped

----------------------------------------------------------------------

My favorite is the PL/1 compiler message

"COMPILER UNABLE TO ABORT"

This is the message when the compiler has attempted to abort the compilation
five times, and has failed each time.

I don't know what happens next.

----------------------------------------------------------------------

This is what the Univac 2200's os1100 os produces, when I fill my
program file beyond its capacity:

I/O TYPE 01 CODE 22 CONT 12 REENT ADR: 015245 BDI: 403034
PACKET ADR 045301
AN ATTEMPT WAS MADE TO WRITE BEYOND THE MAXIMUM ASSIGNED SPACE
FOR A MASS STORAGE FILE. AN ATTEMPT WAS MADE TO EXPAND A MASS
STORAGE FILE BEYOND THE MAXIMUM ASSIGNED SPACE. A READ
FUNCTION FOR A MASS STORAGE FILE SPECIFIED AN ADDRESS (WORD 5
OF THE I/O PACKET) THAT IS BEYOND THE MAXIMUM ASSIGNED SPACE.
A READ OR WRITE FUNCTION FOR A WORD-ADDRESSABLE MASS STORAGE
FILE SPECIFIED A MASS STORAGE ADDRESS (WORD 5 OF THE I/O
PACKET) AND A TOTAL DATA COUNT. WHEN THE MASS STORAGE ADDRESS
IS ADDED TO THE TOTAL DATA COUNT, THE RESULTING ENDING MASS
STORAGE ADDRESS IS GREATER THAN 2*/35-1. A READ OR WRITE
FUNCTION FOR A SECTOR-FORMATTED MASS STORAGE FILE SPECIFIED A
MASS STORAGE ADDRESS (WORD 5 OF THE I/O PACKET) THAT IS
GREATER THAN 2*/30-1. ADI ONLY: REFERENCE ATTEMPTED BEYOND THE
ASSIGNED FILE WHEN THE FILE IS CONFIGURED AS A FH-432 OR
FH-1782 DRUM.
(Filename: FEK*ONT)
END MAP. ERRORS: 1 TIME: 33.978 STORAGE: 054203/014304/035416/3/0220776
ERR$ TYPE 03 CODE 00 CONT 12 REENT ADR: 045147 BDI: 000015
USER EXECUTED ER ERR$.

The fun thing is that the err.msg.s are usually more like:
I/O TYPE 01 CODE 22 CONT 12 REENT ADR: 015245 BDI: 403034

and a register dump.

----------------------------------------------------------------------

My favorite error message that I have *INCLUDED* in a program was:
ERROR: A really big F### UP has been detected !!

----------------------------------------------------------------------

Disk drive error codes:

Momentaraly writing while seeking
Constantly writing while seeking
Momentaraly writing while reading
.....

----------------------------------------------------------------------

If you run "strings" on the executable of gawk (the messdos version, at
least), you'll see a line with this message:

initstate: not enough state (%d bytes) with which to do jack; ignored.

I've no idea how to get gawk (GNU awk) to spit out this message, but it
appeals, somehow....

----------------------------------------------------------------------

We have a PC clone with a flakey keyboard. It often produces the error
message "Keyboard not present, press any key"


A friend of mine in a compiler writing class produced a compiler with one
error message "you lied to me when you told me this was a program"

----------------------------------------------------------------------

My favorite was "PROGRAMMER GOOFED . . . YOU SHOULD NEVER SEE THIS MESSAGE"

----------------------------------------------------------------------

When I was at Purdue, the IE department had a DG Nova system that would respond
to attempts to run object programs formatted for a DG Eclipse system with the
message:

YOU CAN'T DO THAT!

----------------------------------------------------------------------

A library automation package I once worked on had the message:

Man the Lifeboats! Women and children first! ....

Management was not amused when the first customer called in for
support with this message. :-)

No sense of humor, some of those mgt. types!

----------------------------------------------------------------------

Okay, I know this isn't rec.games.trivia, but...

Can someone tell me the machine and editor which, when instructed to

MAKE WAR

would respond with

MAKE LOVE NOT WAR

(no, I don't know the answer; someone told me about this one once)

----------------------------------------------------------------------

It's TECO, on VAX/VMS, and goes like this:

$ make :== $ sys$system:teco32 make
$ make love
Not war?
*

Long live TECO!!!

----------------------------------------------------------------------

Here are some that I found in reading the string-pool from Knuth's TeX:
[Note that I included these from the actual file, so the one with 'can
fix can fix' below is what's actually there!]


(That makes 100 errors; please try again.)


You can now delete more, or insert, or whatever.


Sorry, I don't know how to help in this situation.
Maybe you should try asking a human?


Sorry, I already gave what help I could...


An error might have occurred before I noticed any problems.


``If all else fails, read the instructions.''


This can't happen.


I'm broken. Please show this to someone who can fix can fix


I can't go on meeting you like this.


One of your faux pas seems to have wounded me deeply...
in fact, I'm barely conscious. Please fix it and try again.


Interruption
You rang?


IMPOSSIBLE.

NONEXISTENT.

ETC.

BAD.


A funny symbol that I can't read has just been input.
Continue, and I'll forget that it ever happened.


I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.


I dddon't go any higher than filll.


Dimensions can be in units of em, ex, in, pt, pc,
cm, mm, dd, cc, bp, or sp; but yours is a new one!
I'll assume that you meant to say pt, for printer's points.

----------------------------------------------------------------------
If things go amiss in Interactive Data Language, as they frequently do,
you get :

Something Rotten in Denmark, Interp Stack Not ALigned

just before the core dumps.

----------------------------------------------------------------------

My own favorite, from one of DEC's less successful versions of the RT11
linker:

<Assorted DEC ID fruitcake> ILLEGAL ERROR

----------------------------------------------------------------------

My first 'C' class was under 4.1 BSD. I forgot to name my
first program with a ".c" suffix; hence the following error message:

% cc prog1
ld: bad magic number


which was a bit confusing to a person who didn't know
about magic numbers or what even 'ld' was....

Then there is my favourite, 'sail', who asks for a scenario
number from a list; if anything but a valid digit is input, 'sail'
simply says "very funny" and exits.

----------------------------------------------------------------------

The most common error message we got from a modula II compiler that I used
at an other company was "Unexpected ';', expecting ';'"

----------------------------------------------------------------------

The early versions of TeX had this classic, which I believe the people at
Stanford even had printed on T-shirts:

You can't do that in horizontal mode.

----------------------------------------------------------------------

My favorite was on the (gasp!) IBM 7094. Occasionally, the COBOL
compiler would die with just:

"COMPILER THWARTED".

This was in '74. I remember, because we had a tenth anniversary
party for the compiler (printed a date in '64 at the top of each
listing).

----------------------------------------------------------------------

>We have a PC clone with a flakey keyboard. It often produces the error
>message "Keyboard not present, press any key"

In which case it's not really compaible. *The* message is

"Keyboard error or no keyboard present. Press F1 to continue."

Pull the keyboard lead out of an IBM (while power of), power on and
laaaaugh.

----------------------------------------------------------------------

A program called "junk" written by a student here at PSU gives the
following error message:

"Argument is bletchful."

On the Commodore Amiga, system crashes are always indicated by a black
window with a red flashing border at the top of the screen with the
words "Guru Meditation" and a number.

----------------------------------------------------------------------

This is probably just another Urban Legend, but ...

A large company had just gotten their first Macintosh. As Macs do, it
had a system crash, and popped up a window with a picture (uhh, excuse
me, icon :-) of a bomb on it.

Management ordered the building evacuated. And called the police ...

----------------------------------------------------------------------

Doing a strings on our version of lint yields this error message; I have
no idea how to get it to spit out... stack overflow, maybe?

"lint's little mind is blown."

----------------------------------------------------------------------

And a graph plotting program on the Amiga uses the red box with:

"Hot Damn! You need more ram!"

When it runs out of memory.

----------------------------------------------------------------------

Not to mention the MPW C compiler (not all of these may be funny to all of you):

String literal too long (I let you have 512 characters, that's 3 more than
ANSI said I should)

.....And the lord said, 'lo, there shall only be case or default labels
inside a switch statement'

a typedef name was a complete surprise to me at this point in your program

You can't modify a constant, float upstream, win an argument with the IRS, or
satisfy this compiler

This struct already has a perfectly good definition

type in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11 (I know you
don't care, I'm just trying to annoy you)

Can't cast a void type to type void (because the ANSI spec. says so, that's
why)

Huh ?

can't go mucking with a 'void *'

we already did this function

This label is the target of a goto from outside of the block containing this
label AND this block has an automatic variable with an initializer AND your
window wasn't wide enough to read this whole error message

Call me paranoid but finding '/*' inside this comment makes me suspicious

Symbol table full - fatal heap error; please go buy a RAM upgrade from your
local Apple dealer

----------------------------------------------------------------------

I just got this error message while trying to spell-check a document:

"It seem you are trying to check the output from a word-processor. Not
only does this not make sense, but you would probably damage the file
if you tried so I am not going to let you do this!"

Well, what if I wanted to damage it!!!

----------------------------------------------------------------------

Well just now while switching newsgroups i got this message:

It looks like the active file is messed up. Contact your news administrator
and leave the "bogus" groups alone, and they may come back to normal. Maybe.
^^^^^
----------------------------------------------------------------------

This one is not exactly an error message story, but it's close, so here goes:

Our department is currently developing a Diagnostics package for IBM-PC boxes,
and as one of our intermediate INTERNAL releases, we added a new menu, with
help screen etc, for a set of functions we were about to add. It went through
the normal internal review cycle, with the Dept head spending some time looking
at it as well. Unknown to us, the dept head shipped a copy to a customer to
get their comments. The memo we got back from the customer was quite funny,
and I quote:

The SYSTEM UTILITY menu functions have not been implemented. Therefore
no comments for this. Help for this menu is somebody's idea of a joke!
I can only assume the help will be changed when the menu functions have
been completed

The dept head had never looked at any of the help menus, so he didn't know
what was going on. When he came back to us to find out what the problem was
this is what he found:

Attention K-Mart shoppers: Blue Light special in out SYSTEM UTILITIES
department. for the next 10 days we will be taking requests for the
utilities that you think should be here. Thank you again for shopping
K-Mart.

Needless to say, the dept head was P-Oed, but he ignored the

INTERNAL USE ONLY
disclaimer we had put with the software.

probably not funny, just wierd

----------------------------------------------------------------------

Error messages I've seen:

"Things are not looking good!"

"I didn't think this set of error conditions could ever happen"

"Now deleting all files. Goodbye" Then read a directory in order to make the
hard drive rattle!

When I was new to UNIX -> "file qwerty.asdfg has bad magic."
sounds like a real OS, no rinkydink stuff here?

And I knew some guys that were writing some SW to be used by local
clerical staff, and they got to a this should never happen, but we should
put in a message. Someone said the only person that could ever get into
this deep a mess is Linda, so they put a message that said
"Hi Linda! We wondered how long it would take, for you to mess up this bad."
Well sure enough, six months later,
Linda comes storming in mad as a wet hen, having discovered
that error message.

----------------------------------------------------------------------

One amusing error message that I've seen is produced when you try to
restart the 'nnmaster' news program with the -k option. This should kill
the existing nnmaster so you can restart a new one- But if things go
wrong, you get the message "The running master will not die..."!!

----------------------------------------------------------------------

This would have been a good one; unfortunately, it got caught before
the software went out (last place I worked):

"Shut 'er down, Clancy, she's a-pumpin' mud!"

The perpetrator, to my knowledge, was not found.

----------------------------------------------------------------------

An error has occured on the error logging device.

----------------------------------------------------------------------

I ran a program once which had a menu of commands, including one
to get help. If you pressed the help key you got:

"Out of order"

Very helpful!
In a simialr program, if you typed in an invalid command you got either

"Hey are you talking to me? Try again!"
or
"Invalid command. Feel ashamed for yourself and try again."
or
"Of all the commands available you picked the wrong one!"

----------------------------------------------------------------------

I've never seen this error occur, but I noticed while hacking graphics
routines into the Z80 portion of Radio Shack's (Microsoft's) TRS-80 Model 16
M68000 Xenix. (Note that for a while, this computer supported the largest
Unix (-like) base in the world).

The Z80 handled all the of the IO in the machine and somewhere imbedded in
the code was the message "Shut her down, Scotty, she's sucking mud again!"

----------------------------------------------------------------------

Back in the dark ages (1967 or so) I rewrote a large part of the IBFTC
Fortran compiler for the IBM 7040 to add in most of the goodies which
were becoming available in compilers for other machines. (The primary
models I used were S/360 FORTRAN G and the Sigma 7 Fortran, but I
stole ideas wherever I could.) Keeping track of the data within the
compiler was a complex chore (at the time I was in grad school, and
I was the only staffer on the project...can you say "long hours"?)

I wrote in numerous checks on the internal procedures, but didn't have
much in the way of recovery code if inconsistent data were detected
except to abort with an error message. I swiped the error message from
a GE system; as I wrote it the text was:

ERROR 1164 HOW IN THE HELL DID YOU GET HERE

----------------------------------------------------------------------

Here are a few gems from our Harris VOS system.

We got used to seing this one a lot.

JOBCNTRL ER 512 : WARNING: FILE GENERATED.
>he 512
THE FILE WHICH WAS SPECIFIED AS THE 'COPY TO' OR DESTINATION FILE WAS
NOT THERE AND WAS THEREFORE GENERATED BY JOBCONTROL. IF YOU DID NOT
MEAN TO COPY TO A NEW FILE ELIMINATE THE FILE.

The next few are pretty amusing.

JOBCNTRL ER 76 : NO ACCESS FOR $TOAD SERVICE
>he 76
A USER PROGRAM MADE A CALL TO A $TOAD SERVICE AND THE USER DOES NOT HAVE
THE PROPER ACCESS TO BIT TO USE THAT SERVICE. ACCESS RESTRICTIONS
ARE PLACED ON THE $TOADS SERVICES IN GENERAL, AND $CPRIOR, $PABORT,
AND $SUSP FOR INDIVIDUAL RESTRICTIONS.

JOBCNTRL ER 2167 : NO ACCESS TO VULCANIZE PROGRAM
>he 2167
AN ATTEMPT HAS BEEN MADE TO VULCANIZE A REAL-TIME, MONITOR, OR NRH
TYPE PROGRAM, OR A PROGRAM WITH HIGH ACCESS, ACCOUNTING FILE ACCESS,
OR SUB-SYSTEM ACCESS. THE VULCANIZE REQUEST IS IGNORED BECAUSE THE
USER DOES NOT HAVE ACCESS TO GENERATE SUCH A PROGRAM.

JOBCNTRL ER 2211 : IT'S NOT NICE TO FOOL POP!
>he 2211
YOU JUST TRIED TO FAKE-OUT MOTHER NATURE, AND SHE CAUGHT YOU! SUPER-
VULCAN NOW HAS YOUR NAME ON HIS ENEMY LIST, AND YOU CAN BE CERTAIN THAT
FUTURE ATTEMPTS TO RESOURCE LFN 0,3,OR 6 WILL RESULT IN YOUR BEING
ABORTED, SPINDLED, MANGLED, FOLDED, PUNCHED, DELETED, AND DEALLOCATED.

This last message was often the cause of a sinking feeling late at
night.

JOBCNTRL ER 44 : PROGRAM FILE DESTROYED.
>he 44
THE PROGRAM HAS BEEN ABORTED DUE TO INCONSISTENCIES IN THE INFORMATION
GENERATED BY THE VULCANIZER. THE DISC COPY OF THE PROGRAM MAY HAVE BEEN
DESTROYED OR THE PROGRAM MAY NOT HAVE BEEN RE-VULCANIZED AFTER A MAJOR
SYSTEM RELEASE. IN ANY CASE RE-VULCANIZE THE PROGRAM (RLIBS ALSO).

Fortunately I don't have use this machine anymore :-) :-) :-)

----------------------------------------------------------------------

>From the telephone switch world -

Outputs required from the ALARM SYSTEM
minor alarm
major alarm
critical alarm

alarm system failure alarm

----------------------------------------------------------------------

Trailblazer for the Atari ST has a good one.
You press the [Help] key and the machine laughs at you.

----------------------------------------------------------------------

A friend of mine screwed up somehow when he installed Windows 3.0 on his 386
running DOS 4.01, and now he can hardly run the damn thing without receiving
the following ominous-sounding declaration:

This application has violated system integrity and must be terminated.

No one at Microsoft seems to have heard of it.


Also, I've been told that on VMS, if you attempt to send out e-mail with an
invalid header, it will respond with "You are a charlatan."

----------------------------------------------------------------------

Here's another one:

Occasionally our ultrix system will forget who you are and if you want
to "talk" to another user, the talk daemon will come back with

Go away. You don't exist.

----------------------------------------------------------------------

My OS (QNX) has a command called TSK (short for TASK) which allows you to
view information to do with tasks (code size, id's, son, dad, etc) when
I first saw it a friend of mine showed me the list of commands, of which
one is tsk tsk, I tried it, and it came up with the following message:

Tsk tsk? Have I been a bad computer?

----------------------------------------------------------------------

When I tried to compile a program, (which had compiled nice
on a SUN workstation with both gcc and cc) on one of our old
VAX 11/750 I got the fantastic error

.. line 2706 compiler error: schain botch

(4.3 BSD and cc)

Does anyone have any clue to what that means ?

----------------------------------------------------------------------

In an earlier version of BSD (4.1?) if you did [I think it was a] "who" and
you were the only one on the system, it would print something like

Are you lonely?

Anyone have a better memory of this than I do?

----------------------------------------------------------------------

I remember my old TRS-80 Color Computer. It only had 2-letter
abbrevisations for all errors. The one for "file not open" when
you tried to read/write a file was:

?NO ERROR

It amused me when it happened.

----------------------------------------------------------------------

I got an error message on time while I was copying a file, and the
system seemed to be hung up. Just as I was going to attempt to abort
out the machine came back.


oh........ I give up.... dumping core now!


and the damn thing did !!!!!

----------------------------------------------------------------------

When I was working at Mark Williams Company, I had a midnight project to
take the Atari-ST version of make and put much of the shell functionality
(as far as command line parsing, wild card expansion, and a few built-in
functions) and 'cc' into the make executable, thereby improving the speed
of builds and such. I never did finish this, but I changed the standard
$ make love
Not war?
...
to
$ make love
For heavens sake, doesn't anyone just talk anymore?
...
and considered adding a random selection of other comments, like
Not tonight, I've got a headache.
I beg your pardon?
Your place or mine?
Maybe someone else has managed to hide something like this into a
commercial package.

----------------------------------------------------------------------

When I was in college the entire school was using a single PDP-11/40
under RSTS/E. We had somewhere around 20 DECwriter II's (LA36's) for
use by the students in various places around the campus. One evening
I encountered a terrified beginning FORTRAN student who had encountered
a bug in the FortranIV compiler we were running at the time. Something like:

FORTRAN FATAL INTERNAL ERROR
FATAL COMPILER DAMAGE REPORT FOLLOWS

followed by a page and a half of register and stack dump info. This
student was convinced that he'd broken the compiler, and that he'd be
in big trouble for breaking the compiler for everyone else.

At another point that year, (April 1) someone (I won't say who) edited the
system error message file.


?Invalid Character At Terminal -- Please Go Away
?Unibus timeout -- send in a new quarterback
?Ouch, That HURTS!

And other gems. The computer center manager was not thrilled.

----------------------------------------------------------------------

I worked on a UNIX system that had an editor called e. Once entered
it took control of the screen and required some highly unlikely sequence
of key strokes to exit. It was fairly easy to type e by accident so
to avoid this annoying fate some fellow aliased e to the message
You must be joking.
One day an e user decided to use his terminal and got a surprise.

----------------------------------------------------------------------

> "Error: Error ocurred when attempting to print error message."

I once blew away my VMS shell process by redefining the standard error file
SYS$ERROR (I think, it's been awhile). You execute the command and things
are fine, then you run your pascal program which dies with an error printed
to PAS$ERROR. PAS$ERROR is assigned to SYS$ERROR, which is assigned to
something invalid. The OS wants to tell you that the error channel is
invalid, and what does it try to do? Print on SYS$ERROR. At this point, I
got a hexadecimal register dump(!!) and blown off the system. And this was
on a "commercial" OS. How graceful.

----------------------------------------------------------------------

>"Error #1: Power supply not found"

Or my favorite real error message, found in the User's Manual for the Atari
800 computer, which produced only numbers for errors, so you had to look up
the translation in the manual:

ERROR 0: POWER NOT ON

----------------------------------------------------------------------

Shortly after I started work at the Stephen F. Austin State University computer
center as a support person, we had a coed come in with a very strange problem.
She had been trying to do her FORTRAN homework, and had run across a bug in the
FORTRAN compiler (ANSF on Honeywell CP-V). On her printout was some diagnostic
information, followed by the words:

Break Rob's knuckles.

I've always wondered who Rob was, and what he did wrong.

----------------------------------------------------------------------

>I think it was a remark in the BUGS section of the manpage for tunefs(8),
>something along the lines of "You can tune a filesystem, but you can't tuna
>fish"... Alas, all I can check right now is the Apple Unix man pages, which
>seem to have had the fishy witticisms excised. :-(.

The unix system we used at this university a few years back had two strange man
entries that went something like:

$ man fish

would give you:

Don't say "fish", Bishop. It doesn't mean anything.

and

$ man overboard

would give you:

# # ####### # ###### ###
# # # # # # ###
# # # # # # ###
####### ##### # ###### #
# # # # #
# # # # # ###
# # ####### ####### # ###

BUGS: No life raft

raf

----------------------------------------------------------------------

> My personal favorite: "Oops! Error while handling error!"
> (a concurrent C compiler)

My favorites were from the older Apollo OS's, two of the systems errors
were (I believe I remember them correctly):

Can't find wicked faraway objects.
and
Can't fit 27" tape through 25" door.

These were actually given in response to a request for meaning from
the stcode.

----------------------------------------------------------------------

>}On the venerable Model I Trash-80, the DOS had a vector reserved for what the
>}manual listed as "Unprintable Error". The exact meaning was never defined.

The MSDOS 1.0 manuals had a listing for "Invalid Error".
Talk about getting it wrong.

----------------------------------------------------------------------

error messages. get this one (today, friday, MARCH FIRST, 1991) our mainframe
decided not to allow logins.

why was that?

Nobody was validated for access on february 29th, 1991 (btw, what day of the
week was that?!)

----------------------------------------------------------------------

>[ in regards to the expression "if (a = b)" instead of "if (a == b)" ]
>
>Think *lint*. IMHO, there is nothing we need less than a compiler spitting
>out more useless verbage.

The only problem with that is that many PC based C compilers don't include
a lint program. It makes sense that the programmer at least have the option
of enabling various warning messages. Strangely enough, I once comitted
the exact opposite mistake. I had a C statement like this:

i == j;

The compiler (bless its little heart) gave me the warning:

"code has no effect"

----------------------------------------------------------------------

(Sorry if this is a well-known one. I'm new to Unix.)

Just to rehash an old thread... Today, I accidentally sent an empty mail
message, and Ultrix said, "No message, no subject; hope that's ok."

----------------------------------------------------------------------

Here is another first time post to the net. Hope it meets with your
approval...

I was learning PL/1 a couple years ago and for our first or second
assignment we had to split one file into two files based on the first char
on the line. The program compiled correctly and I even got output of sorts.
The result was the following line...

I the most critical examiner of all have determined that there is an error on
line 42.

----------------------------------------------------------------------

Computers running a DTK BIOS report a parity error as:

Parity Error But Segment Doesn't Found

----------------------------------------------------------------------

Then there was level D of TOPS (before DEC gave releases numbers, and
TOPS was the PDP-10 OP Sys; there was no TOPS-10 (or even Texex yet)).

MORE CORE AVAILABLE, BUT NOT FOR YOU

----------------------------------------------------------------------

I love these. In the SunOS 3.0 source code, somewhere in the VM
system I think, there was a line that said:

panic ("Shannon and Bill say this can't happen");

I saw this one for myself, in 1986, working for a now-defunct company
that was a Sun source licensee at the time. (Saw it in the source,
that is - never saw it happen :-).

....

A DEC oldtimer told me that a DEC-10 once printed

PUNT

after a particularly misguided attempt to get it to boot, is this
one apocryphal?

Does anyone collect these things?

----------------------------------------------------------------------

I've heard -- or read, I think -- about some code that contained the comment
"you aren't expected to understand this". Seems to me it was in TCP/IP.

----------------------------------------------------------------------

>I've heard -- or read, I think -- about some code that contained the comment
>"you aren't expected to understand this". Seems to me it was in TCP/IP.
>/kenw

The Whitesmiths 'C' manual had a line like that in the bugs section
of the manual page after a particulary harrowing description of,
as I remember, an internal function.

----------------------------------------------------------------------

> I've heard -- or read, I think -- about some code that contained the comment
> "you aren't expected to understand this". Seems to me it was in TCP/IP.

Deep inside the Teradyne hardware modeler code is a routine that feeds a
whole bunch of hex numbers into a SYS$QIO call. The only comment is
'Weird magic happens here'.

----------------------------------------------------------------------

I don't collect these things, but I have one to add, and I'm hoping
someone has an Earthly explanation for it. This happened on a
VAX 11/750 running 4.3 BSD. We've all seen the "You have new mail."
message after the csh prompt, but ONCE it actually said instead
"Thou hast new mail." It's only happened once! And I swear it
happened! Has anyone else ever seen this? I don't even know what
triggered it!

----------------------------------------------------------------------

Aaah, but then I want to know about *these* strings, found
(here) in /usr/local/bin/mail:

Too much "sourcing" going on.
Okie dokie
Mail's idea of conditions is screwed up
~h: no can do!?
Too many regrets
detract asked to insert commas
metoo
Somethings amiss -- no @ or % in arpafix
Made up bad net name
ubluit
Who are you!?
; why =

----------------------------------------------------------------------

The Algol compiler for the ICL 1900 used very occasionally collapse with
the message:

"The impossible has happened!"

----------------------------------------------------------------------

Tandy was big on the hidden Trek messages. On of their TRS-80 6.x
upgrades had an ASCII quote buried way out on an unused track.
Something like...

Beam me up Scotty, there's no life out here.

----------------------------------------------------------------------

The VS/PASCAL compiler under VM/CMS (there, that's two V's already and I
haven't even gotten to the real point yet) goes one step further in compiler
honesty. If your program compiles successfully, it will issue

NO COMPILER DETECTED ERRORS.

I swear I can see the italicization on the words "COMPILER DETECTED."

----------------------------------------------------------------------

Epoch has a few funny messages in it for disasterous circumstances.
Some of them are:

"Holy Panes Batman, the window's missing!" - when a X window structure
isn't there.

"Holy PH, Batman, the buffer's missing!" - a window without a buffer.
This one has actually been seen outside the lab.

"Holy Vectors Batman, I can't get more lines!" - malloc failed.

The error message I want to put in, but never have had the chance, is
"System Error - Sureness out of Bounds". You PLATO heads know what I
mean.

----------------------------------------------------------------------

Expressionist (a Mac application for doing equations) has the
following error messages in it:

Mysterious Error -nnn

Internal Error: Illegal hedge TV number. (huh?? what?!)

Internal Error: BlinkThere or HiliteThere messed up.

Bad External File System: Boy, is your system messed up. :)

----------------------------------------------------------------------

Honeywell's customer service department once got a very concerned
message from a confused customer whose MULTICS system had printed:

Hodie natus est radici frater

before giving up the (holy?) ghost. ``Today unto the root is born a
brother''.

This is a hack on ``Hodie natus est filius nobis'', or ``Today unto us
is born a son''. I don't know the reference exactly, but it's in
Handel's Messiah.

It seems a Multics hacker (allegedly Bernie Greenberg) at MIT had
inserted the liturgical allusion when it detected the ``impossible
event'' of the filesystem deciding it had two roots.

[Greenberg is also known for having taken notes in Latin (``for
clarity and precision'') when in the fever dream induced by first
exposure to a Rubik's Cube.]

----------------------------------------------------------------------

In the IRC-server there are some "nice" messages, and here's a coupple of them:

Looks like mere mortals are trying to enter the Twilight Zone
FATAL: Major security hack. Notify Administrator.
Identity problems, eh ?
Bad Craziness
'tis is no game for mere mortals
Go away and get a life
Death before dishonour ?
Dave, don't do that...
Good afternoon, gentelman, I'm a HAL 9000 Computer
Only few mortals may try to enter the Twiligth Zone
Only real wizzards know the spells to open the gate of paradize
Trying to unlock the door twice eh ?
Use the force, Luke !
Change balls, please

My favorite is definitivly the "Bad Craziness" ... :-)

----------------------------------------------------------------------

On an old Perkin-Elmer Machine, the Pascal Compiler would say:

"NONE of your errors have been found"

The compiler was smart enough to know that your program had errors anyway :-)

----------------------------------------------------------------------

Now, granted, this is something one of us here did, but our VAX precedes
its panics with the message

"Well, you ran into something and the game is over."

----------------------------------------------------------------------

My favorite RSTS/E error message is "Unused error message #xxx". Somehow
I managed to get these when hitting ^C as a certain program loads.

----------------------------------------------------------------------

Take this for what it's worth, but at a shop where I once worked, an
overnight processing run would sometime fail with the error message:

"FALL DOWN GO BOOM"

----------------------------------------------------------------------

Well, this is just a story, picked up from the early days of Usenet, so it's
possibly unfounded and furthermore some folks have likely already seen it,
but it gave me days of snickers.

Story goes that that some little text-edit subsystem of something or other
which had very few things that could go wrong had only one error message,
used for both user and internal errors:

Data potato doo-wop doo-wop

When pressed for an explanation, the programmer said: "well, I figured
it hd to print *something* when there was an error."

----------------------------------------------------------------------

> When you type your mail and type ~C (typo for ~c) my unix mail tells me:
>
> Okie dokie, core dumped.

bash$ cat > x.c
main() { execl ("/bin/mail", 0); }
^D
bash$ gcc x.c
bash$ ./a.out
puke
bash$

----------------------------------------------------------------------

On the old NCR Towers I used to get the following message on the
console whenever someone on a terminal would hold down the left
(or right - I forget which) arrow key:

spurious multibus interrupt

It took us a long time to figure out what was causing the messages
since nothing else bad happened and the people on the terminals
would be looking at their own screens while typing. Anyone on the
console, on the other hand, would look at the process table for
suspicious processes, etc.

NCR took the bug report with a great deal of disbelief, but their next
release of UNIX didn't have the problem.

----------------------------------------------------------------------

I predict that Eighth Generation computers
will compile no programs, run no applications,
and access no data. Instead they will be
designed and tuned to give a continuously
variable spectrum of elegant and precise
error messages describing your failure to
induce them to do so.

----------------------------------------------------------------------

As long as we're running strings on everything from here to
Berkeley...

Someone in a now-junked message pointed out something from lint. I
don't remember what it was, but here's one I did find in lint, SunOS
4.1.1 (I think):

EDOTDOT!!!!

Your guess is probably much better than mine.

----------------------------------------------------------------------

You think THATS funny (it is), but strings "/usr/lib/sendmail" for a few laughs:

>From the silly:-

You wascal wabbit! Wandering wizards won't win!
savemail: HELP!!!!

to the plausible but still silly:-

Who are you ?
Can't parse myself!

to the plain ridiculous:-

MAIL DELETED BECAUSE OF LACK OF DISK SPACE

- not to mention all the SMTP "HELO" dialogue...

----------------------------------------------------------------------

What about this one (present in SunOS 4.1.1 and who knows where else)
when attempting to use the csh builtin 'suspend' from a login shell:

Can't suspend a login shell (yet).

What's that supposed to mean??? Not until later in the afternoon? Not
until they rewrite the shell? Not until you get rid of stopped jobs?

:-) I got quite a chuckle out of that one.

----------------------------------------------------------------------

The SAIL compiler had a number of puns on sailing, one of which was the
compiler internal error message which referred to "dryrot" (if you don't
know anything about boats and sailing, be aware that "dryrot" is the
bane of a boatowner's existence, and once it sets in your boat is
doomed...). The modula "dryrot" message seems to indicate that at least
one implementor had used SAIL.

----------------------------------------------------------------------

The classic short message was from JOSS, one of the early interactive
languages (from the mid-1960's; it ran on a machine at RAND Corporation
called the JOHNNIAC). It was on a small machine. It had one catchall
message:

EH?

this was based on the premise that the error would be so blindingly
obvious to the programmer that no further indication of the nature of
the error was required.

Wrong.

(I worked in another interactive system that thought this was such a
cute idea that they used it. This was a mistake. If you knew the
language, the cause of the error may have been obvious, but if you
didn't know the language you were in deep trouble. They extended this
philosophy to the printed documentation!)

----------------------------------------------------------------------

Well, I've seen the "You are a charlatan" in a mail context before,
though only on a DEC-20. Lessee, any DEC-20s left... :-(

Oh yeah, sri-nic ..err.. nic.ddn.mil.

bordeaux$ telnet nic.ddn.mil 25
Trying 192.67.67.20 ...
Connected to nic.ddn.mil.
Escape character is '^]'.
220-NIC.DDN.MIL SMTP Service 6.1 at Fri, 26 Jul 91 18:21:06 PDT
220 Don't Worry.
helo nonesuch.noao.edu
250 NIC.DDN.MIL - Never heard of that name, bordeaux.kpno.noao.edu
helo cc.utah.edu
250 NIC.DDN.MIL - You are a charlatan, bordeaux.kpno.noao.edu
quit
221 NIC.DDN.MIL -- Be Happy!

----------------------------------------------------------------------

We used a language called JEAN on ICL's 1900 series. We knew this was a
dialect of JOSS but it must have been closer than we knew as it used the
same error message.

The JEAN error message I liked was "Your expression has defeated me" which
was generated by a program such as
1.1 X=X
1.2 PRINT X

I never understood this until I was explaining to someone the meaning of
recursion in Algol. To demonstrate that simpler languages could not
handle recursion I gave JEAN a recursive definition of a factorial and
to my surprise it gave the right answer!

To understand this you also need to know that in JEAN
SET X=3 gave the variable X a value.
LET X=3 defined X as a function.
and the default verb was LET, not SET.

Hence "Your formula has defeated me" meant that it had run out of store
because of infinite recursion.

What a pity Basic defeated the much more elegant JOSS.

----------------------------------------------------------------------

Twenty or so years ago, the Fortran IV compiler for the SDS Sigma 2
would occasionally comment at the bottom of your listing:

WARNING: 54 - PROGRAM NOT RECURSIVE

(That *looks* right. I'm pretty sure about the number and the text.)

I was somewhat startled by the message, since I knew Fortran programs
were not recursive.

Eventually, in a fit of boredom and despair, I wrote a recursive
program which produced the error message. Worked fine, too. So far
as I know, it may still be running. Wasn't RE-ENTRANT tho.

----------------------------------------------------------------------

This carried over into other operating systems, including RT-11. Another
one I remember is HELP ME, which came back with:

Help is not available for you.

----------------------------------------------------------------------

Masscomp C compiler:
"Insane structure member list"

----------------------------------------------------------------------

In most cases I've found that a good way to find out what you can do with
a language is to read well-written descriptions of what you *can't* do
with it. I got into systems programming in the early 1960s by reading
the error message listings in the FORTRAN compiler, first for the 7090
FMS and later in IBSYS. Of course, in today's world the vendors would
have collective apoplexy if anyone seriously asked to see the compiler
sources, and the error message descriptions seem to routinely go something
like this:

Error ABC123D: User Error

Explanation: An unknown error has occurred in an unidentified program
while executing an unimplemented function at an
undefined address.

User Response: Correct error and resubmit.

----------------------------------------------------------------------

(this is what an older version of MMDF says)

telnet deskpro.sow.econ.vu.nl smtp
Trying 130.37.48.1 ...
Connected to deskpro.sow.econ.vu.nl.
Escape character is '^]'.
220 deskpro.sow.econ.vu.nl Server SMTP (Complaints/bugs to: postmaster)
helo foo.bar
250 deskpro.sow.econ.vu.nl - Liar, Liar! Pants on Fire!
quit
221 deskpro.sow.econ.vu.nl says goodbye to kappl.cs.vu.nl at Tue Jul 30 22:13:43
.
Connection closed by foreign host.

----------------------------------------------------------------------

I was just installing PCSA version 4.0 for DOS on a machine here, and after the
boot I got a system error. Okay, no problem, I do a quick

USE \\HOSTNAME

to see if the machine knows anything about the host. Lo and behold, it does
but it refuses to tell me:

Error: Success


-----------------------------------
, Mike




Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Monday, July 21, 2008

Using Perltidy To Beautify Ugly Perl Scripts

Howdy again,

Today, we're going to look at almost the exact opposite of what we've done in the past in our posts on security through obfuscation (the series being linked back to on the most recent page) and look at a freely available, and highly configurable, way to unmangle Perl code. The program (or, to be more exact, the Perl Module) that takes care of that for us is called Perl::Tidy, which also, in the build process, creates a binary called perltidy that I find is more convenient to run tests with for the most part, since it requires no edits of the mangled Perl script and can easily be dumped to different output files or file descriptors via simple command line switches.

And, speaking of perltidy's command line switches, if you ever want to take a look at all of them (and there are more than a few ;), just type:

host # perltidy -h |more <-- The pipe to more is only a suggestion, but should make it easier to read the 3 to 4 pages of output you're going to get :) The output should be the same for everyone, but this was only specifically tested on Solaris Unix, RedHat Linux and Cygwin for Windows.

For a simple example of how this Perl Module/program works, let's take a look at a simple Perl program that asks for a username and password, after which it spits out the simple "crypt" result which you could cut-and-paste into your /etc/shadow file (if you're a cowboy ;)

host # cat crypt_mess.pl

#!/usr/bin/perl

#
# crypt_mess.pl
#
# This code is insane
#

print "Enter a user name: "; $name = <STDIN>; system("stty -echo"); print "Password: "; $pass = <STDIN>; system("stty echo"); print "\n"; chop($name); chop($pass); print &CryptPasswd($name,$pass); print "\n"; sub CryptPasswd { local($ph_alias,$clearpasswd) = @_; @saltset = ('a' .. 'z','A' .. 'Z', '0' .. '9','.','/'); $now = time(); ($pert1, $pert2) = unpack ("C2",$ph_alias); $week = $now / (60*60*24*7) + $pert1 + $pert2; $nsalt = $saltset[$week % 64] . $saltset[$now % 64]; $cryptpass = crypt($clearpasswd,$nsalt); return($cryptpass);}


Just for kicks, we'll make sure it works (which we could also reasonably assume from the output of a "perl -c" syntax check):

host # ./crypt_mess.pl
Enter a user name: user1
Password:
dTumj3pR1ZtjA


Cool (of course, if you really want to test it, you can use the crypt function to see if that string actually matches the password you typed in, like we did in a previous post on simple password guessing).

Now let's tidy up that code with perltidy (we'll also use the -syn flag to do the equivalent of a "perl -c" syntax check at the same time - this only shows output if there is an error in the syntax. You get no indication of the syntax being "OK" like you do with "perl -c"):

host # perltidy -syn crypt_mess.pl

Note that, since we didn't use any options, the default action for perltidy (insofar as file preservation is concerned) is to leave the original file alone and create a new "tidied up" file with a .tdy extension (using perltidy with the -b option will make a backup of the original file and inline-edit the existing file):

host # cat crypt_mess.pl.tdy
#!/usr/bin/perl

#
# crypt_mess.pl
#
# This code is insane
#

print "Enter a user name: ";
$name = <STDIN>;
system("stty -echo");
print "Password: ";
$pass = <STDIN>;
system("stty echo");
print "\n";
chop($name);
chop($pass);
print &CryptPasswd( $name, $pass );
print "\n";

sub CryptPasswd {
local ( $ph_alias, $clearpasswd ) = @_;
@saltset = ( 'a' .. 'z', 'A' .. 'Z', '0' .. '9', '.', '/' );
$now = time();
( $pert1, $pert2 ) = unpack( "C2", $ph_alias );
$week = $now / ( 60 * 60 * 24 * 7 ) + $pert1 + $pert2;
$nsalt = $saltset[ $week % 64 ] . $saltset[ $now % 64 ];
$cryptpass = crypt( $clearpasswd, $nsalt );
return ($cryptpass);
}


And it looks much nicer. But, and we should always do this test, does it still work?

host # ./crypt_mess.pl.tdy
Enter a user name: user1
Password:
dsT2fglQvgnyM


Assuming we've checked that the output string is good, this is good news! :) Of course, like I mentioned, perltidy has a ton of options (literally pages worth, unless you have an extremely high-rez monitor). For instance, if we wanted to conform to Gnu's formatting spec's (-gnu), and just print to STDOUT (-st), instead of creating a new file, we could do this:

host # perltidy -st -gnu crypt_mess.pl
#!/usr/bin/perl

#
# crypt_mess.pl
#
# This code is insane
#

print "Enter a user name: ";
$name = <STDIN>;
system("stty -echo");
print "Password: ";
$pass = <STDIN>;
system("stty echo");
print "\n";
chop($name);
chop($pass);
print &CryptPasswd($name, $pass);
print "\n";

sub CryptPasswd
{
local ($ph_alias, $clearpasswd) = @_;
@saltset = ('a' .. 'z', 'A' .. 'Z', '0' .. '9', '.', '/');
$now = time();
($pert1, $pert2) = unpack("C2", $ph_alias);
$week = $now / (60 * 60 * 24 * 7) + $pert1 + $pert2;
$nsalt = $saltset[$week % 64] . $saltset[$now % 64];
$cryptpass = crypt($clearpasswd, $nsalt);
return ($cryptpass);
}


And, lastly, it can also create output in HTML format, which may or may not be useful for you. It's very easy to implement, but does have its limitations. For instance:

host # perltidy -html crypt_mess.pl

will create HTML output, but (per the picture at the end of this post) it's not really very well formatted (This is due to the fact that perltidy, in this instance, doesn't really do too much tidying. You can get around this by running perltidy on your file and then running "perltidy -html" on your tidied file so that it looks better - see picture number 2). However, the code itself can be modified and basic css is included in the html file. You can also auto-create, or read in, a css style sheet by using that command line option. Note, here, that the default behaviour of the -css flag is to create the file if it doesn't exist but to leave it alone if it does:

host # perltidy -css=my.css -html crypt_mess.pl

And this is the default css stylesheet you can expect it to output if none exists:

host # cat my.css
/* default style sheet generated by perltidy */
body {background: #FFFFFF; color: #000000}
pre { color: #000000;
background: #FFFFFF;
font-family: courier;
}

.c { color: #228B22;} /* comment */
.cm { color: #000000;} /* comma */
.co { color: #000000;} /* colon */
.h { color: #CD5555; font-weight:bold;} /* here-doc-target */
.hh { color: #CD5555; font-style:italic;} /* here-doc-text */
.i { color: #00688B;} /* identifier */
.j { color: #CD5555; font-weight:bold;} /* label */
.k { color: #8B008B; font-weight:bold;} /* keyword */
.m { color: #FF0000; font-weight:bold;} /* subroutine */
.n { color: #B452CD;} /* numeric */
.p { color: #000000;} /* paren */
.pd { color: #228B22; font-style:italic;} /* pod-text */
.pu { color: #000000;} /* punctuation */
.q { color: #CD5555;} /* quote */
.s { color: #000000;} /* structure */
.sc { color: #000000;} /* semicolon */
.v { color: #B452CD;} /* v-string */
.w { color: #000000;} /* bareword */


And that should be enough to get you started. As I mentioned, perltidy has "a lot" of options. Using it straight-up, I find, is about all I ever really need, but you can certainly use this module to do more things than are dreamt of in my philosophy ;)

Click the picture below to see it in it's original size:

Sample perltidy HTML output

Click below here to see tidied up Perl that was then converted to HTML

Tidied up and them HTMLed Perl script

Cheers,

, Mike

Saturday, July 12, 2008

A Little Linux and Unix Humor - Error Messages

Hey There,

For this weekend, I went trolling around looking for something funny (because not enough funny things happen to me at work) and I found this great list of 189 Funny Error Messages. They're tagged under Unix but some of them are definitely MainFrame/IBM or Linux errors. Some of them may, hopefully, make you laugh, some of them may make you cry (again, laughing) and some of them you might not find amusing. Anyway, as the old joke goes, it's posted here for free and worth every penny ;)

153 and 164 were duplicates, so I replaced 153 with one of my personal favorites of all time :) This blog, since it's being hosted on blogger (owned by Google, who could crush me in an instant), I've removed all profanity, since my site is advertised as "family friendly," or something like that. I find it hard to picture a family gathering around the PC eagerly waiting to hear what happens when the Octal Dump finishes, but that was the best classification I could get ;)

If you'd like to see the unexpurgated version, please check out the original list of humorous Unix errors, leave him a comment to let him know your favorite and browse around there while you're at it. It's a pretty decent site. BTW, if you're reading this, own that site and want me to pull this post, I'll be happy to (actually, I'll be somewhat depressed). If not, I thank you for your generosity and hope this drives you some good traffic :)

Enjoy :)

1. “Values of B will give rise to dom.”
2. FATAL system error #nnnn CAUSE: We should never get here!
3. OHHHH…. I give up Core dumped
4. COMPILER UNABLE TO ABORT
5. AN ATTEMPT WAS MADE TO WRITE BEYOND THE MAXIMUM ASSIGNED SPACE FOR A MASS STORAGE FILE. AN ATTEMPT WAS MADE TO EXPAND A MASS STORAGE FILE BEYOND THE MAXIMUM ASSIGNED SPACE. A READ FUNCTION FOR A MASS STORAGE FILE SPECIFIED AN ADDRESS (WORD 5 OF THE I/O PACKET) THAT IS BEYOND THE MAXIMUM ASSIGNED SPACE. A READ OR WRITE FUNCTION FOR A WORD-ADDRESSABLE MASS STORAG FILE SPECIFIED A MASS STORAGE ADDRESS (WORD 5 OF THE I/O PACKET) AND A TOTAL DATA COUNT. WHEN THE MASS STORAGE ADDRESS IS ADDED TO THE TOTAL DATA COUNT, THE RESULTING ENDING MASS STORAGE ADDRESS IS GREATER THAN 2*/35-1. A READ OR WRITE FUNCTION FOR A SECTOR-FORMATTED MASS STORAGE FILE SPECIFIED A MASS STORAGE ADDRESS (WORD 5 OF THE I/O PACKET) THAT IS GREATER THAN 2*/30-1. ADI ONLY: REFERENCE ATTEMPTED BEYOND THE ASSIGNED FILE WHEN THE FILE IS CONFIGURED AS A FH-432 OR FH-1782 DRUM.
6. ERROR: A really big XXXX UP has been detected !!
7. Momentaraly writing while seeking..
Constantly writing while seeking..
Momentaraly writing while reading..
8. initstate: not enough state (%d bytes) with which to do jack; ignored.
9. “Keyboard not present, press any key”
10. “You lied to me when you told me this was a program”
11. “PROGRAMMER GOOFED . . . YOU SHOULD NEVER SEE THIS MESSAGE”
12. YOU CAN’T DO THAT!
13. Man the Lifeboats! Women and children first!
14. $ make :== $ sys$system:teco32 make
$ make love
Not war?
15. That makes 100 errors; please try again.
16. You can now delete more, or insert, or whatever.
17. Sorry, I don’t know how to help in this situation.
18. Maybe you should try asking a human?
19. Sorry, I already gave what help I could…
20. An error might have occurred before I noticed any problems.
21. If all else fails, read the instructions.
22. This can’t happen.
23. I’m broken. Please show this to someone who can fix can fix
24. I can’t go on meeting you like this.
25. One of your faux pas seems to have wounded me deeply.. in fact, I’m barely conscious. Please fix it and try again.
26. Interruption
27. You rang?
28. IMPOSSIBLE.
29. NONEXISTENT.
30. ETC.
31. BAD.
32. A funny symbol that I can’t read has just been input.  Continue, and I’ll forget that it ever happened.
33. I suspect you’ve forgotten a `}’, causing me to apply this control sequence to too much text. How can we recover? My plan is to forget the whole thing and hope for the best.
34. I dddon’t go any higher than filll.
35. Dimensions can be in units of em, ex, in, pt, pc, cm, mm, dd, cc, bp, or sp; but yours is a new one!
36. Something Rotten in Denmark, Interp Stack Not ALigned
37. <Assorted DEC ID fruitcake> ILLEGAL ERROR
38. bad magic number
39. “very funny”
40. “Unexpected ‘;’, expecting ‘;’”
41. You can’t do that in horizontal mode.
42. “COMPILER THWARTED”
43. “Keyboard error or no keyboard present. Press F1 to continue.”
44. “Argument is bletchful.”
45. “Guru Meditation”
46. “lint’s little mind is blown.”
47. “Hot Damn! You need more ram!”
48. String literal too long (I let you have 512 characters, that’s 3 more than ANSI said I should)
49. And the lord said, ‘lo, there shall only be case or default labels inside a switch statement’a typedef name was a complete surprise to me at this point in your program
50. You can’t modify a constant, float upstream, win an argument with the IRS, or satisfy this compiler
51. This struct already has a perfectly good definitiontype in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11 (I know you don’t care, I’m just trying to annoy you)
52. Can’t cast a void type to type void (because the ANSI spec. says so, that’s why)
53. Huh ?
54. can’t go mucking with a ‘void *’
55. we already did this function
56. This label is the target of a goto from outside of the block containing this label AND this block has an automatic variable with an initializer AND your window wasn’t wide enough to read this whole error message
57. Call me paranoid but finding ‘/*’ inside this comment makes me suspicious
58. Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer
59. “It seem you are trying to check the output from a word-processor. Not only does this not make sense, but you would probably damage the file
60. if you tried so I am not going to let you do this!”
61. It looks like the active file is messed up. Contact your news administrator and leave the “bogus” groups alone, and they may come back to normal. Maybe.
62. Attention K-Mart shoppers: Blue Light special in out SYSTEM UTILITIES department. for the next 10 days we will be taking requests for the utilities that you think should be here. Thank you again for shopping K-Mart.
63. “Things are not looking good!”
64. “I didn’t think this set of error conditions could ever happen”
65. “Now deleting all files. Goodbye”
66. “file has bad magic.”
67. “Hi Linda! We wondered how long it would take, for you to mess up this bad.”
68. “The running master will not die…”
69. “Shut ‘er down, Clancy, she’s a-pumpin’ mud!”
70. An error has occured on the error logging device.
71. “Out of order”
72. “Hey are you talking to me? Try again!”
73. “Invalid command. Feel ashamed for yourself and try again.”
74. “Of all the commands available you picked the wrong one!”
75. “Shut her down, Scotty, she’s sucking mud again!”
76. ERROR 1164 HOW IN THE HELL DID YOU GET HERE
77. WARNING: FILE GENERATED THE FILE WHICH WAS SPECIFIED AS THE ‘COPY TO’ OR DESTINATION FILE WAS NOT THERE AND WAS THEREFORE GENERATED BY JOBCONTROL. IF YOU DID NOT MEAN TO COPY TO A NEW FILE ELIMINATE THE FILE.
78. NO ACCESS FOR $TOAD SERVICE A USER PROGRAM MADE A CALL TO A $TOAD SERVICE AND THE USER DOES NOT HAVE THE PROPER ACCESS TO BIT TO USE THAT SERVICE. ACCESS RESTRICTIONS ARE PLACED ON THE $TOADS SERVICES IN GENERAL, AND $CPRIOR, $PABORT, AND $SUSP FOR INDIVIDUAL RESTRICTIONS. JOBCNTRL ER 2167 : NO ACCESS TO VULCANIZE PROGRAM
79. AN ATTEMPT HAS BEEN MADE TO VULCANIZE A REAL-TIME, MONITOR, OR NRH
TYPE PROGRAM, OR A PROGRAM WITH HIGH ACCESS, ACCOUNTING FILE ACCESS,
OR SUB-SYSTEM ACCESS. THE VULCANIZE REQUEST IS IGNORED BECAUSE THE
USER DOES NOT HAVE ACCESS TO GENERATE SUCH A PROGRAM.
80. IT’S NOT NICE TO FOOL POP!
81. YOU JUST TRIED TO FAKE-OUT MOTHER NATURE, AND SHE CAUGHT YOU! SUPER-VULCAN NOW HAS YOUR NAME ON HIS ENEMY LIST, AND YOU CAN BE CERTAIN THAT FUTURE ATTEMPTS TO RESOURCE LFN 0,3,OR 6 WILL RESULT IN YOUR BEING ABORTED, SPINDLED, MANGLED, FOLDED, PUNCHED, DELETED, AND DEALLOCATED.
82. PROGRAM FILE DESTROYED. THE PROGRAM HAS BEEN ABORTED DUE TO INCONSISTENCIES IN THE INFORMATION GENERATED BY THE VULCANIZER. THE DISC COPY OF THE PROGRAM MAY HAVE BEEN
DESTROYED OR THE PROGRAM MAY NOT HAVE BEEN RE-VULCANIZED AFTER A MAJOR SYSTEM RELEASE. IN ANY CASE RE-VULCANIZE THE PROGRAM (RLIBS ALSO).
83. minor alarm
84. major alarm
85. critical alarm
86. alarm system failure alarm
87. This application has violated system integrity and must be terminated.
88. “You are a charlatan.”
89. “Go away. You don’t exist.”
90. Tsk tsk? Have I been a bad computer?
91. line 2706 compiler error: schain botch
92. Are you lonely?
93. Anyone have a better memory of this than I do?
94. ?NO ERROR
95. I give up…. dumping core now!
96. For heavens sake, doesn’t anyone just talk anymore?
97. Not tonight, I’ve got a headache.
98. I beg your pardon?
99. Your place or mine?
100. FORTRAN FATAL INTERNAL ERROR FATAL COMPILER DAMAGE REPORT FOLLOWS
101. ?Invalid Character At Terminal — Please Go Away
102. ?Unibus timeout — send in a new quarterback
103. ?Ouch, That HURTS!
104. You must be joking.
105. Error: Error ocurred when attempting to print error message.
106. Error #1: Power supply not found”
107. ERROR 0: POWER NOT ON
108. Break Rob’s knuckles
109. “You can tune a filesystem, but you can’t tuna fish”
110. $ man fish
Don’t say “fish”, Bishop. It doesn’t mean anything.
111. $ man overboard
BUGS: No life raft
112. “Oops! Error while handling error!”
113. Can’t find wicked faraway objects.
114. Can’t fit 27? tape through 25? door.
115. “Invalid Error”.
116. “code has no effect”
117. “No message, no subject; hope that’s ok.”
118. I the most critical examiner of all have determined that there is an error on line 42.
119. Parity Error But Segment Doesn’t Found
120. MORE CORE AVAILABLE, BUT NOT FOR YOU
121. Shannon and Bill say this can’t happen”);
122. PUNT
123. ‘Weird magic happens here’.
124. “Thou hast new mail.”
125. Too much “sourcing” going on.
126. Okie dokie
127. Mail’s idea of conditions is screwed up
128. ~h: no can do!?
129. Too many regrets
130. detract asked to insert commas
131. metoo
132. Somethings amiss — no @ or % in arpafix
133. Made up bad net name
134. ubluit
135. Who are you!?
136. ; why =
137. “The impossible has happened!”
138. Beam me up Scotty, there’s no life out here.
139. “NO ERRORS DETECTED”.
140. NO COMPILER DETECTED ERRORS.
141. Holy Panes Batman, the window’s missing!
142. “Holy PH, Batman, the buffer’s missing!”
143. “Holy Vectors Batman, I can’t get more lines!”
144. “System Error - Sureness out of Bounds”
145. Mysterious Error -nnn
146. Internal Error: Illegal hedge TV number. (huh?? what?!)
147. Internal Error: BlinkThere or HiliteThere messed up.
148. Bad External File System: Boy, is your system messed up.
149. Hodie natus est radici frate
“Today unto the root is born a brother’”
150. Looks like mere mortals are trying to enter the Twilight Zone
151. FATAL: Major security hack. Notify Administrator.
152. Identity problems, eh ?
153. Error: Bad SLAB magic!
154. ’tis is no game for mere mortals
155. Go away and get a life
156. Death before dishonour ?
157. Dave, don’t do that…
158. Good afternoon, gentelman, I’m a HAL 9000 Computer
159. Only few mortals may try to enter the Twiligth Zone
160. Only real wizzards know the spells to open the gate of paradize
161. Trying to unlock the door twice eh ?
162. Use the force, Luke !
163. Change balls, please
164. Bad Craziness - Error reported to webmaster - please hang up and try again.
165. “NONE of your errors have been found”
166. “Well, you ran into something and the game is over.”
167. “Unused error message #xxx”
168. “FALL DOWN GO BOOM”
169. Data potato doo-wop doo-wop
170. Okie dokie, core dumped.bash
171. Puke.
172. spurious multibus interrupt
173. EDOTDOT!!!!
174. Your guess is probably much better than mine.
175. You wascal wabbit! Wandering wizards won’t win!
176. savemail: HELP!!!!
177. Who are you ?
178. MAIL DELETED BECAUSE OF LACK OF DISK SPACE
179. Can’t suspend a login shell (yet).
180. EH?
181. You are a charlatan, bordeaux.kpno.noao.edu
182. “Your expression has defeated me”
183. “Your formula has defeated me”
184. WARNING: 54 - PROGRAM NOT RECURSIVE
185. Help is not available for you.
186. Masscomp C compiler:”Insane structure member list”
187. User Error: An unknown error has occurred in an unidentified program while executing an unimplemented function at an undefined address. Correct error and resubmit.
188. Liar, Liar! Pants on Fire!
189. Error: Success

, Mike

Wednesday, February 13, 2008

Prtdiag And "Lane Width Failed" Errors On Solaris 10

A lot of admins who work with Solaris 10 Zones may have run into this situation already, but I'm just starting to hear it now from users who like to do their own diagnostics before coming to me with a possible system issue. Don't get me wrong folks; I love it when users show this kind of initiative (as long as they don't go into the data center and start pressing buttons ;)

This problem is similar to the problem Solaris 10 has with old style /usr/ucb/ps, but it isn't quite as prevalent.

The situation that occurs is that a user, trying to gather information on the system that may, or may not be, having a hardware or software issue, runs a pretty standard command called "prtdiag," probably like this:

host # /usr/platform/`uname -i`/sbin/prtdiag

Now, in Solaris 10, this doesn't always cause an error. The reason for this, and how it differs from the old style ps error, is that it only occurs when the user runs prtdiag on Solaris 10 with Zones enabled.

Another thing that makes this unusual error so rare is that, on most Zone-enabled Solaris 10 setups, users accounts are all setup in the non-global Zone and prtdiag will only run in the global Zone. Obviously, the "rules" aren't followed all the time, insofar as system setup and access are concerned. Like they say: the customer is always right, even if he's doing something he probably shouldn't be (or something like that ;)

So far, I've only seen this error on the Mx000 Series Servers from Sun, but that's probably because we use those the most. Generally, the error will present itself in some way similar to the following (Looks scarier than it is and the actual error may vary)

host # /usr/platform/`uname -i`/sbin/prtdiag <-- Stripping the 100 lines preceding the error in my ongoing effort to fight eye-strain ;)

...
IO Lane/Frq
LSB Type LPID RvID,DvID,VnID BDF State Act, Max Name Model
--- ----- ---- ------------------ --------- ----- ----------- ------------------------ ------------------
Logical Path
------------
Getting lane width failed for path /pci@3,800000/SUNW,emlxs@0


And, again, just like our ps error on Solaris 10, running the command as root makes everything work just fine:

root@host # /usr/platform/`uname -i`/sbin/prtdiag

...
IO Lane/Frq
LSB Type LPID RvID,DvID,VnID BDF State Act, Max Name Model
--- ----- ---- ------------------ --------- ----- ----------- ------------------------ ------------------
Logical Path
------------
00 PCIe 3 1, fc21, 10af 1, 0, 0 okay 4, 4 SUNW,emlxs-pci10af,fc21 LPe110094-S
/pci@3,800000/SUNW,emlxs@0


Sun's stock answer, for now, is to change the permissions of the prtdiag command so that it runs setuid root (For those of us who are reading this and don't know what that means - A very small portion of the audience that bothered to read this far, I'm sure - when a program is setuid "username," it will run as that user - with that user's privileges - no matter what user actually executes it)

root@host # chmod 4755 /usr/platform/`uname -i`/sbin/prtdiag

or, if you prefer to change your file modes in alpha:

root@host # chmod u+s /usr/platform/`uname -i`/sbin/prtdiag

Probably the best way to work-around this, and keep with Sun's basic security requirement of not running programs like this setuid root, is to make use of a program called sudo (which comes with Solaris 10). Just include a rule like the one below, so that users can only run "/usr/platform/`uname -i`/sbin/prtdiag" straight up and can't run it with any additional flags or switches. This will allow them to get the information they want and safeguard you, the admin, against any unforeseen issues with this work-around. Example rule below:

ALL ALL = (root) /usr/platform/`uname -i`/sbin/prtdiag ""

Another promise from me that, eventually, we will get to a post devoted entirely to sudo. For now, here's a quick rundown on how this rule reads:

ALL <--- All users can use this sudo rule
ALL <--- This command can be used on any host.
= <--- The cement that connects the preceding user and host restrictions with the commands and options to follow
(root) <--- This command will be run as the user root
/usr/platform/`uname -i`/sbin/prtdiag "" <--- This is the only allowed command. This command specifies that /usr/platform/`uname -i`/sbin/prtdiag can only be run with no additional switches or flags (like "-v"). The "" (double-double quotes) indicate that no switches are allowed after the command.

Hopefully, and in all likelihood, this solution should keep everyone happy. You've kept the security flaw from being exploited, retained the original permissions on /usr/platform/`uname -i`/sbin/prtdiag and allowed users to be able to get their diagnostic output.

All that's left to do is thank your user base for helping make your job easier :)

, Mike