Sorry to make so many threads, but I think this one deserves its own thread. This was partially mentioned in the EDITMAT thread.
You can get likely your calculator to hard crash and corrupt its memory in the following manner:
1. Create a new app and within the app have new bindings for the default views such as Plot, PlotSetup, etc. Your app should presumably creates new global variables.
2. Run the app and make sure everything is working.
3. Open the program editor with your app currently running. Simply open the source code to your app and close it.
4. Now, press a key corresponding to what your app overrides. For example, if your app has a new Plot() function, press plot.
At this point there is a good chance that your calculator resets, and possibly corrupts memory.
You can use my Graph 3D app, which I have slightly updated in a different thread. Here are the exact steps:
1. Follow the steps on how to install the app. Click here for the source.
2. Run the app and plot 1/390*(X^3*Y-X*Y^3) using the default window settings. After you see a graph, press [Num] to see a table of Z-values. (This is just to simulate having done stuff on the app.)
3. Now, with Graph 3D as the current app, go to the program editor (press [SHIFT][1]) and open the source to the Graph 3D app. Simply open and then close it with [ESC]. I have sometimes experienced a warmstart at this point.
4. Immediately try to plot using the [Plot] button and the calc will hang and eventually warmstart. Or try pressing [Num]. If it doesn't hang try turning it off... and then if can look at the matrices via [SHIFT][4]. M0 is a copy of Zvals, and I often get a huge matrix that is less than 1 kB in size!
Edit: If no crash occurs, press [View] and select Plot Settings. When prompted to enter values, just hit [Esc]. After all is done, try [Plot].
What I think is happening:
After exiting the program editor, the calc tries to compile the source into an executable. The problem, however, is that when it's the currently running app, then function pointers are probably slightly changed and what was once a valid pointer is possibly no longer valid.
Current workaround:
Any time you close the program editor (after editing the currently running app), restart the app (exit to a different app and start your app again).
Edit: Also, BEFORE you edit your app (on-calc), make sure to be at the HOME screen and not on the one of the app-button screens such as Plot or PlotSetup. This is extremely crucial if your app actually replaces these routines.
Edited: 27 Sept 2013, 12:07 p.m.