RE: PICC 9.70
My crash was not the same as yours because I don't call functions from my interrupt routine. Plus I am using the PIC 10/12/16 compiler and don't know what PIC you are using.
I believe you can call the same functions from the main code and interupt code. The problem is when you call them indirectly (i.e. via a pointer). Hi-Tech automatically duplicates any functions that are called by an interrupt routine, but it can't do that if they are called indirectly because the compiler doesn't know where they will end up. You can use indirect calls from either the main code or the interrupt code, but not both (based on what I read).
The __delay_ms is actually a macro, so you should be able to use it in the interrupt routine.
These are just some quick thoughts, I only have about 2 months experience with the latest Hi-Tech compiler. I did use an earlier version several years ago.