Crashes, Errors and PalmOS Your Guide to a Healthy and Stable Palm
PalmOS handhelds have become immensely popular largely due to their
stability and ease of use. Sadly, though, in the end, Palm handhelds are really
computers, designed and created by people, running software written and
designed by other people, all of whom are decidedly imperfect. So, inevitably, from
time to time, Palms still occassionally crash. Knowing the reasons why, and how
to prevent them, is key to keeping your device as stable as possible and
maximizing your handheld experience.
VIRUSES, WORMS, AND OTHER NASTIES
In the PC world, an epidemic of transmittable nasties have made viruses
nearly synonymous with computer instability. At the same time, a
booming industry has appeared protecting our desktops from catching the sniffles.
But what is a virus anyway? Viruses, put simply, are programs that can replicate
themselves, spreading onto other machines via infected disks, documents,
and emails. They tend to make PCs unstable either by design or by the
invasive methods they use to secretly spread.
So, when a Palm crashes, many assume it too must be a virus. The truth
is, on the handheld, a crash is much more likely due to occur due to an
invasive virus checker than an actual virus. Today, no Palm viruses are known to
be in circulation, probably because current devices are not connected
enough to allow an infection to spread very well. In fact, a careful read of the
documentation of one virus product seems to indicate that the only
viruses the product really stops are a few test viruses the manufacturer made
themselves, calling into question the value of even installing a virus
checker in the first place.
UPGRADING YOUR HANDHELD
In reality, a large number of difficulties actually come when upgrading
to a new handheld. PalmOS 5 is internally radically different from PalmOS 4
and earlier versions, and many older programs can't run correctly under PalmOS 5
without modification. Even worse, some apps cannot even be upgraded because
they require functionality that PalmSource "voted off the island" when they
"upgraded" PalmOS. Thus, when upgrading your handheld to OS5, be sure to check
with program manufacturers to see if you'll need to upgrade your software first.
Sometimes, a crash is frustratingly difficult to track down because it's not
obvious which program is at fault. For instance, after a system reset,
PalmOS calls every program in main memory to perform initialization. If one
of those programs has a bug or incompatibility with the operating system, it
can crash or lockup the device with no hint of it being responsible.
Worse yet, if the reset were originally prompted by the installation or activation
of another program, the crash might falsely imply that the innocent new program
To get around a reset-induced crash, perform a safe boot, sometimes called a
"warm" reset. To do this, pinhole-reset the device while holding down the
page-up button. PalmOS will start up without calling any applications,
allowing you to use the device. You can then selectively delete suspect apps,
performing a normal reset afterwards to confirm if the deleted apps had been
the cause of the problem. Note that drivers and some system functionality will
be disabled when running in "safe" mode, so you'll want to reset again after
your tests to restore full functionality to your handheld.
Occasionally, problems occur during the HotSync process, particularly on
OS5 handhelds. This is because the PalmOS5 HotSync application is unique
amongst PalmOS applications, being compiled natively for the ARM processor.
There is an ugly bug in the PalmOS PACE emulation layer which causes hacks,
drivers, and background apps to crash if they call certain system functions
Unfortunately, there's no quick fix for this with a
program whose manufacturer has not already found a workaround. At worst
case, you may need to manually disable certain hacks or drivers during
HotSync to prevent a crash or conflict.
Another issue, though, while not a crash, is more common. The PalmOS 5
HotSync app is very sensitive to timing, and if you are running certain background apps and drivers, it can be flakier than the crust
on Mom's apple pie.
In most cases, Palm's Portable Keyboard driver is responsible, making HotSync
operations fail, especially if any other background apps are running. Again,
this tends to falsely implicate other applications you may have just installed.
If HotSyncs are unreliable, lose connection, or won't start, make sure to
try disabling the Palm keyboard driver application, if present.
Lastly, crashes during HotSync can occur when Palm Desktop is trying to install
apps. Many folks already know that trying to install new Hack or background app
when an older version is still running usually preceeds a frantic search for a
paperclip, pushpin, or other poke-worthy reset device.
What most people don't know, however, is that files can get "stuck" in your
Palm Desktop install folder, causing HotSync to try to install these files
again and again every time you HotSync. When they do, you get a crash every
HotSync after turning on that Hack or background app. This usually
occurs because files you've installed have their "read-only" property bit set,
possibly because they were copied from a CD-Rom or other protected device. To
fix the problem, find the "Install" folder under your device name in the
Palm Desktop directory. Delete the stray files there after turning off their
"read-only" status for those files.
STACK SPACE AND MEMORY
The overwhelming majority of crashes, however, is due to running out of stack memory.
This usually shows when running hacks, drivers, pop-up programs, and other
Normal, "foreground" applications are ones that you run from the system launcher.
When you start another program, a standard foreground application exits and has
no residual functionality at all after you exit them. Background applications,
on the other hand, are different in that they can still run when you are inside
other applications. Apps of this type include hacks, keyboard drivers,
popup launchers, text input programs, some dictionaries, and security apps.
The Stack memory that these use is a precious pool of RAM that is shared by
the foreground app and all running background apps. The default system stack
is only about 5k. Because PalmOS was not designed with multitasking in mind,
the amount of stack memory is determined solely by the current foreground
application. Thus, it's up to background apps to each use as little stack
space as possible, and each foreground app to allocate more stack space than
it needs and thus voluntarily "play nicely" with background apps.
The sad thing, though, is that there's no absolute guideline for how much stack space
a background app can use, or for how little extra space a foreground app can
leave. No matter how "friendly" all the participants are, there will always
be a finite limit to which and how many background apps one can run.
If you suspect a stack space crash, look for the following warning signs:
1) Stack memory overflows tend to result in unpredictable, sometimes
spectacular crashes requiring a hard reset.
2) Specific error messages are rare, being a simple "Fatal Exception" if
they appear at all.
3) Stack crashes usually go away when you turn off one or more background
apps. Often, people take this as a sign that one particular app is
defective. However, more often it is the *combination* of multiple apps
overflowing the stack together which is really the problem.
If the crashes occur only when inside a single foreground application, you
can often fix the problem using TealMover, whose "info" screen lets you
increase the stack space requested by that app. The app must not be in
ROM or flash memory, and the change is permanent unless you manually
change it back or reinstall the app. Increasing the stack by 1k
or 2k is usually sufficient.
If, on the other hand, crashes occur while in many different apps, the
problem is probably due to the total stack space requirements of
multiple background apps. If so, your options are more limited. Under PalmOS 3 or 4,
you can use TealMemBrain to globally boost the stack space for all
foreground apps. The effect is temporary, only lasting while TealMemBrain
is running. But under PalmOS 5, you're sadly outta luck, and just have to
choose to eliminate one or more background apps and test by trial and error
until the system is stable again.
And so ends our little foray into the frightening world of technical support.
I hope you've enjoyed the trip, and have learned a little too. The next time
you're in contact with a customer support conscript, you now know some of
the issues they battle every day. Kept in perspective, your handheld
has no more issues than any other device, operating system, or manifestation of
technology. However, understanding what few quirks that do exist can be a key
to truly maximizing you handheld owning experience.