If a function is recursive, there can be many frames for the same function. The frame for the function in which execution is actually occurring is called the innermost frame. This is the most recently created of all the stack frames that still exist. Inside your program, stack frames are identified by their addresses. Usually this address is kept in a register called the frame pointer register while execution is going on in that frame.
Some compilers provide a way to compile functions so that they operate without stack frames.
This is occasionally done with heavily used library functions to save the frame setup time. If the innermost function invocation has no stack frame, nevertheless regards it as though it had a separate frame, which is numbered zero as usual, allowing correct tracing of the function call chain. However, has no provision for frameless functions elsewhere in the stack. Backtraces A backtrace is a summary of how your program got where it is. You can stop the backtrace at any time by typing the system interrupt character, normally C-c .