You can manipulate the same data structures ( in this case your stack) pseudo-asynchronously in both the loop() and in the interrupt service routine called by the timer.
You should declare any shared variables as volatile and should suspend interrupts in the loop for the statement where you are using such a shared variable.