TreoCentral has a review of a replacement battery cover for the Palm Treo 650. They start the review with a sentence that threw me for a loop:
If the phrase “if I had a nickel for every time I had to reset the Treo” has ever crossed your mind, the Seidio Battery Cover with reset hole is a must.
I’ve been using the Treo 650 for nearly a year. If I had a nickel for every time I had to reset my Treo, I’d have… a nickel. Mine crashed once the day I bought it, when I overfilled the memory with software, and I haven’t had a crash since.
Nevertheless, Palm machines—not just the Treo—have a reputation of crashing more often than Microsoft Windows. Seidio isn’t insane—they actually saw a market for a special battery cover to enable quicker resets, and they’ll probably sell some.
It doesn’t have to be this way. Got a crash-prone Palm? Don’t buy a new battery cover to make it easier to reset, fix it. Here are some tips to make your Palm as stable as mine.
Why Does it Crash?
Operating systems, like PalmOS, divide a device’s memory between applications and the OS. At any given time, your Palm’s memory might be divided into sections for various portions of the core operating system, the application you’re running right now, and maybe a background application or two.
Ideally, each program would use its portion of the memory, and ignore the rest. Unfortunately, sometimes a badly-written application will access memory outside its own range, which can lead to corrupted data or to a crash.
Modern operating systems use a system called memory protection to prevent each application from messing with memory that belongs to the OS, or to another application. PalmOS, as you may have guessed, has very poor memory protection. Protected memory is one of the features touted for PalmOS 6.0 (Cobalt), announced over a year ago. Unfortunately, no current Palm device includes the Cobalt OS—not even the two new ones—so for now we’re stuck with the older, unprotected version.
Less Applications, Less Crashes
With Palm’s unprotected memory, any application can potentially cause a crash, and with thousands of applications available, it’s no surprise that the majority of Palm users have experienced crashes. To avoid crashes, you need to manage your installed applications carefully:
- Consider whether you really need an application before installing it.
- Remember that any application can cause crashes, including optional software that came with your Palm. Don’t install it unless you need it.
- Check your list of installed software regularly and remove applications you no longer use.
- If possible, avoid applications that run in the background—for example, Graffiti replacements and pop-up accessories. Since these are running all of the time, they have the potential to crash your Palm any time, not just when you’re using them.
- Install only one application at a time, and test the Palm for a day or two before you install any others.
Fortunately, there’s a great deal of stable Palm software out there that is unlikely to cause crashes—for example, Astraware’s games and Tealpoint’s applications. Once you find an application you can trust, it’s unlikely to be a problem.
How to Crash-Proof Your Palm
If you’re already dealing with frequent crashes, I suggest you make a fresh start:
- Install the latest updates for your Palm from Palm support. Some crashes are caused by buggy system software, so eliminate those first.
- Sync your Palm to a computer and view the log to make sure the sync was successful.
- Select App | Delete and delete everything in the list except applications you’re sure you need.
- Soft reset the Palm using the Reset button.
- Test the Palm for a few days. If it no longer crashes, you’re done.
- Still crashing? Try deleting all applications. (If you’re sure you have backups of the installation files for all of your software, a hard reset will do this quickly.) You should now have a Palm with only the built-in software, and no crashes.
- Now reinstall each application you need, one at a time. (You can usually find your deleted applications in your Palm\username\Archive directory.) After each one, try switching between applications and using every feature you can think of, and see if you run into crashes.
Troubleshooting Crashes
If you make sure to install applications one at a time and use your Palm for a while before installing anything else, it’s easy to guess which application causes a crash—it’s usually the one you installed last. Also, if crashes always happen within a certain application, it’s probably due to a bug in the application. If they happen randomly in many different applications, you’re probably dealing with a background program or, rarely, a bug in PalmOS itself.
If you’re using a Treo 600 or 650, there’s a built-in debugging feature that will tell you which program caused the most recent crash. Try dialing the following special code from the phone application:
- ##377 (Sprint / CDMA phones)
- #*377 (GSM phones)
- #*#377 (Verizon)
After you enter the correct code and click Dial, a dialog displays the date, time, program, and error message for the most recent crash. This is especially useful since crashes will sometimes reset the Treo without displaying a message.
Unfortunately, the application causing your crashes might turn out to be one you really need. In that case, your best bet is to contact the person or company who produced the application, describe the circumstances that cause the crash in as much detail as possible (including the specific error message from the Treo debugger) and see if an update is available. No update? Choose a different application, or invest in that easy-reset battery cover.
Conclusion
I realize this is drastic advice—Palm sold you a device that can run thousands of great games and applications, and I’m telling you to install as few as possible. But with Palm’s touchy memory, that’s the only way to prevent crashes.
If you’re willing to give up unstable software—and consider all software unstable until proven otherwise—you can have a crash-proof Palm.
Update 12/6/05: Added Treo crash diagnostic details. (Thanks Sam!)