Sometimes the compiler introduces new functions that are used to implement a user function, but are not directly specified in the source. This is mostly done for argument type and count checking.
The debugger will normally show these entry point functions as if
they were the normal main entry point, but more detail can be obtained
by setting sb-debug:*show-entry-point-details*
to true; this is
primarily useful for debugging SBCL itself, but may help pinpoint
problems that occur during lambda-list processing.
With recursive functions, an additional :EXTERNAL
frame may
appear before the frame representing the first call to the recursive
function. This is a consequence of the way the compiler works: there
is nothing odd with your program. You will also see :CLEANUP
frames during the execution of unwind-protect
cleanup code.
The :EXTERNAL
and :CLEANUP
above are entry-point types,
visible only if sb-debug:*show-entry-point-details*
os true.