comprehensive list of common library methods that do not work in interrupt service routines
The basic rule is quite simple, but the list is practically impossible to produce.

The rule is:


You cannot use anything that relies on an interrupt to function from within an interrupt service routine.


AVR chips only have one interrupt priority. Only one interrupt routine can function at a time. If an interrupt fires whilst an ISR is currently executing that interrupt will be delayed until the ISR finishes.  If that ISR relies on a function that itself needs an ISR to fire (such as millis(), or serial transmission), then it will never get to finish.

A partial list of things to know:


You cannot transmit serial more than there is room in the TX buffer for, or it blocks.
The time generated by millis() (which delay() relies on) never changes.
Servo motors cannot be controlled and will jitter if an interrupt routine takes too long.
tone() generated sounds will also jitter since the ISR is delayed while another ISR is executing


And basically anything else that uses interrupts.