HiveBrain v1.2.0
Get Started
← Back to all entries
debugjavascriptCritical

Maximum call stack size exceeded error

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
errormaximumstackcallsizeexceeded

Problem

I am using a Direct Web Remoting (DWR) JavaScript library file and am getting an error only in Safari (desktop and iPad)

It says


Maximum call stack size exceeded.

What exactly does this error mean and does it stop processing completely?

Also any fix for Safari browser (Actually on the iPad Safari, it says


JS:execution exceeded timeout

which I am assuming is the same call stack issue)

Solution

It means that somewhere in your code, you are calling a function which in turn calls another function and so forth, until you hit the call stack limit.

This is almost always because of a recursive function with a base case that isn't being met.
Viewing the stack

Consider this code...

(function a() {
    a();
})();


Here is the stack after a handful of calls...

As you can see, the call stack grows until it hits a limit: the browser hardcoded stack size or memory exhaustion.

In order to fix it, ensure that your recursive function has a base case which is able to be met...

(function a(x) {
    // The following condition 
    // is the base case.
    if ( ! x) {
        return;
    }
    a(--x);
})(10);

Code Snippets

(function a() {
    a();
})();
(function a(x) {
    // The following condition 
    // is the base case.
    if ( ! x) {
        return;
    }
    a(--x);
})(10);

Context

Stack Overflow Q#6095530, score: 857

Revisions (0)

No revisions yet.