gcc@ssc-vax.UUCP (Greg C Croasdill) (01/14/86)
*** REPLACE THIS LINE WITH YOUR MaSSAGE *** g'Day, I'd like some help. My Mac seems to be a very cranky critter. The only compiled language I have for it is the Public domain version of Modula-2. I got this from another person here at work who has been doing development with his copy. My problem is that when I finish compiling and linking an application and then try to use the result, I consistantly get a system error 02. I'd like to know what is wrong - am I not using the compiler right or is there something wrong with my Mac? My setup is a 2 drive, 512K system. I have run multiple memory tests and they all come back saying that there is no problem. The person who I got this from has had no problems with his. The compiler and linker both finish and produce no errors (on the example progams) I'll be >more than happy< to answer any other diagnostic questions you may have. Thanks in advance, Greg Croasdill (uw-beaver|fluke)!ssc-vax!gcc Sorry, there has been a serious system error. RESTART resume id=02
briand@tekig4.UUCP (Brian Diehm) (01/15/86)
>and then try to use the result, I consistantly get a system error 02.
This error results from a request to access a word or long word that is not on
an even-byte boundary. If you have a word pointer, or a long pointer, that
ever has an odd number in it, then using that pointer will get you error 02.
This comes directly from the 68000.
As you can see from the nature of the problem, this could be ANYWHERE in what
you are trying to do!
-Brian Diehm
Tektronix, Inc.gjs@k.cs.cmu.edu (Gregory Stein) (01/17/86)
A system error 2 is the Mac reporting an address error. (It
can't recover from this, so it bombs.) This is usually caused by
problems with pointers. Say, for example, you have a pointer
to an integer. When you get the value of the integer by saying
something like my_ptr^, the Mac will return the integer at the
address in the pointer variable my_ptr. Now, the problem occurs
when this address has an odd value. The 68000 can only retrieve
the integer value from an even address. The same sort of thing
occurs for long integers -- they must have an even address, too.
So, what happened is that somewhere in your program an attempt
was made to get an integer or long integer value from an odd
address.
I can't see the Modula 2 compiler generating code to do
this, so my best guess is that you did some sort of call to
the resource manager to get a resource (this includes things
such as GetNewDialog and GetNewWindow) but the resource wasn't
there. In this case, the GetResource call will return a handle
containing 0. When a routine attempts to use this handle it
looks at address 0 for another address. This address is most
likely odd in your case, so the Mac crashes.
My suggestion would be to look for calls that return handles
and put a test for a nil handle after the call.
Greg Stein
..!ucbvax!gjs@k.cs.cmu.edu
These dumb signature lines -- why do we do it?
A communist plot to weed out comedians.