🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.windows.ms.programmer
5 messages
5 total messages Started by Steve Loughran Tue, 14 Apr 1992 09:37
Goodbye UAE?
#356
Author: Steve Loughran
Date: Tue, 14 Apr 1992 09:37
96 lines
4093 bytes
So hello to Win3.1!
A brave new operating system with absolutely no UAE dialogue boxes!

We can all rejoice now that UAE is an error message which will
vanish into the mists of time to reside with "ABEND" and 
"BDOS Err A on B:" as error messages used to scare young hackers about
programming in the Old Days.

Or can we? Just because the message is gone, doesn't mean that a new
UAE dialog isn't out there, waiting. 
Waiting till that big demo.
Waiting till your applet goes on sale. 
Waiting till the second tuesday of the sixth month of 1993...

I've aleady got quite a frightening error message while compiling & testing a
dos program which sustained a "Bolivian Bus-Plunge" class crash:

	This application has violated system integrity
	and will be terminated. 

	Quit all applications, quit Windows, and then
	restart your computer.

Will be terminated huh? Does that mean a T1000 is motorbiking across 
Britain shooting all programmers called Steve?

And this "quit windows" business. Is that a blatant plug for win NT,
OS/2 2.0 or what?

Rather than keep wondering what else was "out there" I've just been through
the WINDOWS\SYSTEM directory with GREP, STRINGS and ResWorkshop.
Some of the stuff I found was quite interesting...

The dreaded "UNRECOVERABLE APPLICATION ERROR" used to reside in
KRNL386.EXE, and really is gone now.
It looks like it has been replaced by the standard message :

	An error has occurred in your application.
	If you choose Ignore, you should save your work in a new file.
	If you choose Close, your application will terminate.

The possible extra details are:

	a General Protection Fault
	a Divide by Zero
	a Stack Fault
	an Illegal Instruction
	a Page Fault
	a Not Present Fault  	(what's this - device related?)
	an Application Fault	(pretty specific this one)
	Segment Load Failure
	Out of Selectors

There seems to be more interesting stuff in WINOA386.MOD, with eight variants
on the Quit Windows message, each for a different cause -page fault, 
General Programming Exception, privilege violation, and, unusually,
invalid hardware manipulation. 

There are also lower serious fault with what look like exactly the same 
causes, yet the solution is just 
"It is recommended that you save all your changed data as soon as possible."  

Why the difference? The thing we all learned from the UAE days was that 
you could keep running everything else with about 50% success,and it was only
when progman ripped that you were in deep trouble.

Finally, I think the "Abort, Retry or Ignore?" award for the the least
useful error message may well go to 
	 "Call to Undefined Dynalink"

This has replaced 
	"Cannot find FOO.DLL, Please insert in drive A:"

I don't deny that the old message was useful only if you had a nearby
machine with the required DLL and a spare floppy, but at least you knew
which file you needed. Now the only chance you have is to use EXEHDR and
look through the imports to find all the DLLs. I forsee hours of fun here.

So, goodbye UAE, Hello CUD & QuitWindows!!!

	-Steve

PS. Something that might be useful -strings 513-517 in USER.EXE
This is where User, Company and version information seems to reside...

	
-----------------------------------------------------------------------------
|		  Steve Loughran					    |
| E-MAIL:         slo@hplb.hpl.hp.com || slo@hpl.hp.co.uk || slo@hplb.uucp  |
| ORGANISATION:   Hewlett-Packard Laboratories, Bristol			    |
| ADDRESS:        Filton Road, Stoke Gifford, Bristol, England, BS12 6QZ    |
| TELEPHONE:      +44 272 228717					    |
| FAX:		  +44 272 790554					    |
-----------------------------------------------------------------------------
	
Re: Goodbye UAE?
#367
Author: Milan Shah
Date: Tue, 14 Apr 1992 19:13
39 lines
1988 bytes

  Or can we? Just because the message is gone, doesn't mean that a new
  UAE dialog isn't out there, waiting. 

I can't believe how badly misunderstood this 'No UAE' business has. Pray,
tell me, as a programmer, how in hey do you expect *any* OS to detect 
and correct an error in an application? What do you want Windows to do
when you dereference a Null pointer?

UAE's were terrible because of the following - an application error would
not be detected at the time of the error, but would manifest itself later
on at seemingly completely random times. So for example, Program A could
do something illegal (like delete a resource not belonging to it), things
would continue fine, and then later on, Program B, owner of resource, 
dies with UAE. Now, the poor programmer of Program B is trying to figure 
out what s/he did wrong. (This is probably a bad example, but you get the
point)

The GPF flags an error when it occurs, so that the fault is correctly 
identified to be with Program A.

The following program will die under every OS of the past, present, and
future: whether you call it UAE, GPF, segmentation fault, bus error, or
whatever. 

void main()
{
	int *pnCrash;

	pnCrash = 0;
	*pnCrash = 1;
}

The big improvement in Windows is not that UAE's don't occur (they *must*,
if there is an error in the user program), but that they are *detected*
correctly and at the time the error occurs.

Milan
Re: Goodbye UAE?
#406
Author: Pierre VonKaenel
Date: Wed, 15 Apr 1992 15:26
20 lines
1126 bytes
In article <MMSHAH.92Apr14141355@im5.lcs.mit.edu> mmshah@im.lcs.mit.edu (Milan Shah) writes:
>
>The big improvement in Windows is not that UAE's don't occur (they *must*,
>if there is an error in the user program), but that they are *detected*
>correctly and at the time the error occurs.
>
>Milan
>
>


What I can't understand is why I'm now getting all sorts of new "UAE"s
from programs I've been using successfully under Win3.0.  Xtalk for
Windows is one I regularly get.  

-- 
Pierre von Kaenel	| Skidmore College	     | pvonk@scott.skidmore.edu
Math & CS Dept.		| Saratoga Springs, NY 12866 | (518)584-5000 Ext 2391

"Baseball is 90% mental, the other half is physical" - Yogi
Re: Goodbye UAE?
#431
Author: Richard Hancock
Date: Thu, 16 Apr 1992 10:12
14 lines
1125 bytes
/ hpopd:comp.windows.ms.programmer / pvonk@scott.skidmore.edu (Pierre VonKaenel) /  4:26 pm  Apr 15, 1992 /

>What I can't understand is why I'm now getting all sorts of new "UAE"s
>from programs I've been using successfully under Win3.0.  Xtalk for
>Windows is one I regularly get.  

It may be that Windows 3.1 is uncovering previously hidden defects.

For example, we discovered a defect in our code related to the freeing of
an explicitly loaded DLL. This defect didn't cause a UAE in Windows 3.0a,
but did in Windows 3.1. (We were calling a function from a DLL which then
explicitly freed the DLL; as we returned from the function to hyperspace
we UAE'd. It seems that freeing DLLs is "more synchronous" under 3.1 than
under 3.0a.)
Re: Goodbye UAE?
#456
Author: bruce
Date: Thu, 16 Apr 1992 22:30
43 lines
2253 bytes
In article <MMSHAH.92Apr14141355@im5.lcs.mit.edu>, mmshah@im.lcs.mit.edu (Milan Shah) writes:
>   Or can we? Just because the message is gone, doesn't mean that a new
>   UAE dialog isn't out there, waiting. 
> 
> I can't believe how badly misunderstood this 'No UAE' business has. Pray,
> tell me, as a programmer, how in hey do you expect *any* OS to detect 
> and correct an error in an application? What do you want Windows to do
> when you dereference a Null pointer?

 [More good examples and discussion of the UAE problem, but then he says:]

> The following program will die under every OS of the past, present, and
> future: whether you call it UAE, GPF, segmentation fault, bus error, or
> whatever. 
> 
> void main()
> {
> 	int *pnCrash;
> 
> 	pnCrash = 0;
> 	*pnCrash = 1;
> }

I can't resist the urge to make a pedantic comment (please forgive me) -
actually this program will very happily compile and run on the PDP-11
RSX system and a number of other systems.  On a lot of the PDP-11 systems
location 0 was the Directive Status Word, used to pass back status results
from system calls from the Executive to the user program.  This sequence
just sets the DSW to 1, a perfectly legal (if strange) operation for a
user program to do - in fact a 1 was the "successful completion" code for
most system calls.

But most protected-mode operating systems have deliberately unmapped
location 0 because it's so convenient for detecting the dereferencing
of a NULL pointer, so it's not a bad example, just that the quantifier
"every" is wrong (should be "most").

Apart from that minor slip (:-) your summary of this subject is quite
good.  For the most part it isn't Windows' fault that UAE's or whatever
exist, but it is (usually) Windows' fault when it allows the UAE in one
app to crash all the other apps on the system.

Bruce C. Wright
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads