Technical Q&As


OPS 16 - System Error 29 (12-September-97)


Q My customers report my application crashing with system error 29, but that error is not documented in "Errors.h". What does it mean?

A While system error 29 is not documented in any of the standard places, it is possible to get it in a roundabout fashion.

On the original (pre-System 7) Mac OS, the Package Manager was allocated system error numbers 17 to 24 for use when it failed to load a package. The Package Manager raises the error based on the equation 17 + packNum, where packNum was the package number that it couldn't load, ranging from 0 to 7.

Note: For more information about packages, see "Inside Macintosh: Operating System Utilities", Chapter 10.

System 7 extended the Mac OS to have more packages; package numbers now range from 0 to 15. Unfortunately the error handler in the Package Manager was not updated to reflect this change, which means it still raises the error based on the equation 17 + packNum. This produces a number of undocumented error codes, and aliases to existing error codes. The table below gives the exact mapping.

Error  Standard Meaning    Package
-----  ----------------    -------
25     Out of memory         8 AppleEvents
26     Can't launch file     9 PPC Browser
27     File system trashed  10 --
28     Heap/stack collision 11 Edition Manager
29     --                   12 Color Picker
30     --                   13 Database Access Manager
31     --                   14 Help Manager
32     --                   15 Picture Utils

So you can see that System Error 28 can mean either "heap/stack collision", or "could not load the Edition Manager package". And system error 29 almost certainly means "could not load the Color Picker package".

There are a variety of reasons why the Package Manager might fail to load a package, and thus raise this system error. The most common one is that the system heap is too full to load the package's code. Another possibility is that the package is not installed. Finally, it could be that the system resource file is corrupt (either on disk, or maybe just the resource map in memory), and so the Package Manager can't find the PACK resource to load.

You can debug this problem with MacsBug. When you get the error, you will drop into MacsBug. You can then use the "hx" command to switch to the system heap, and the "ht" command to find out how much space is free in the system heap. While you're at it, you should most probably use "hc all" to check all heaps for corruption. Finally, you can also use the command "rd -f 2 -t 'PACK'" to get a dump of 'PACK' resources in the resource map of the system file, to see if they are all present and loaded.



-- Quinn "The Eskimo!"
Worldwide Developer Technical Support

Technical Q&As | Contents
Previous Question | Next Question

To contact us, please use the Contact Us page.