comprehensive list of common library methods that do not work in interrupt service routines Where is a comprehensive and authoritative list of commonly used library or built-in methods (functions) that do not work properly in Arduino interrupt service routines? 

I am aware of the following:


do not use delay()
do not use Serial print methods


which are part of Nick Gammon's advice linked here. His TLDR summary is:


  TL;DR :
  
  When writing an Interrupt Service Routine (ISR):

Keep it short
Don't use delay ()
Don't do serial prints
Make variables shared with the main code volatile
Variables shared with main code may need to be
            protected by "critical sections" (see below)
Don't try to turn interrupts off or on



however, I am looking for, as I said, a list that is more comprehensive and authoritative.
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.