The stack is a region of memory on which local automatic variables are created and function arguments are passed. The implementation allocates a default stack size per process. On modern operating systems, a typical stack has at least 1 megabyte, which is sufficient for most purposes. Under anomalous conditions, the program exceeds its stack limit. This causes a stack overflow. The two most common causes for a stack overflow is an infinite recursion
If a program crashes due to a stack overflow, it is mostly caused by a infinite recursion or too large local objects.
In simple words [I know you like that

] :
Errors like this are mostly caused by a little programming error.