So for anyone that may have run into strange behaviour when using Serial from within callbacks, this is one of the major pitfalls that I myself fell into many years ago. The temptation is to log when an event happened exactly when it happened but the best way to do it is to set a boolean flag and possibly save a timestamp and log from within your main loop. Things may appear to work fine at first but your whole program is doomed to fail if you print in an interrupt. My only guess at why this happens is that it has something to do with the program counter and interrupts literally jumping out of order and throwing a wrench into the logic of the serial class.