Skip to main content

Hi,


One of my page start behaving weirdly and was getting the following error:

Uncaught RangeError: Maximum call stack size exceeded


Finally found the culprit , which is a UI-Only formula field.


I do not see any reason this should happen, maybe someone can explain, as it’s a very simple formula field (addition of 3 percent fields)


UI-Only Formula field return a number, and here’s formula: {{Ownership_Of_Applicant_1__c}}+{{Ownership_2__c}}+{{Ownership_3__c}}. all 3 of those SF fields are of “percent” type of field


Here’s some SS of error:




Thx

Dave~

How odd, exceeding call stack size error are usually caused by infinite loops. We would like to look further into this. Would it be possible to grant Skuid login rights? When you have done so, please send your org ID, name of the Skuid page, and how to reproduce this error to support@skuid.com

Thanks!
Karen


Sent


Dave~

Unfortunately, we are not able to replicate the error message you are seeing by following your instructions in your org … Are you still having this problem?

Thanks!
Karen


Hi Karen,

When i found the field causing the issue,In the mean time that I receive an answer, I had removed it and found another way to do what i needed.

Yesterday I tried recreating it , so you can test on it and on my side issue was intermittent, sometimes working well and other times no, with no apparent logic i can understand

So I guess for now , let’s leave it aside? or would you like to me to try to recreate it again and testing further?

Thx


Dave,

Since you found a workaround, let’s go with that for now. If you have more problems, let us know and we can investigate. 

Glad you found another way to do it!
Karen


I am also having this issue in our code.


Anna, were you able to resolve this? We’re now encountering the same issue. 


Hi Anna and Jamie,

Is your scenario similar to what Dave described? If it’s different, can you describe your scenario in more detail? Also, please share any error messages you’re seeing in the browser console. 


Note - Jamie has a separate conversation about this here.


This error is almost always means you have a problem with recursion in JavaScript code, as there isn’t any other way in JavaScript to consume lots of stack. Sometimes calling a recursive function over and over again, causes the browser to send you Maximum call stack size exceeded error message as the memory that can be allocated for your use is not unlimited.


How to fix


Wrap your recursive function call into a -


  • setTimeout

  • setImmediate or

  • process.nextTick

Also, you can localize the issue by setting a breakpoint on RangeError type of exception , and then adjust the code appropriately. Moreover, you can managed to find the point that was causing the error by check the error details in the Chrome dev toolbar console , this will give you the functions in the call stack, and guide you towards the recursion that’s causing the error.


Hi Dave, at a glance this could be resulting from a Javascript function calling itself recursively, or a stack of “too many” functions. In the context of your page, are you aware of any Javascript snippets or other processes that could be calling themselves without a way of halting?


Hi ,

I don’t see anything of the sort, and nothing new added…

As well if that was the case, why would i be the only user having this issue?

I would be willing to do a screen share, if someone wants to see it.

Thx


Can you provide more details about what leads to this error? And, are there similar work flows that don’t lead to the error?

You’ve said you’re the only user that’s seeing this behavior. Could there be any object, field, workflow, etc. that only your admin account can access, which is being brought into this process? The goal in asking this is to try and narrow down the places to check for the culprit. 


Hi Mark,

Sure I’ll do my best to provide what i can see:

 I logged under another admin and no issue at all…

So seems only me

As well it seems to be happening for 2 specific page includes only … If i remove  both page includes from  page , the error stops…

Both of those page include are based on same models (and kind of very similar, down to a couple exceptions)

Removing one of them at a time, I still get issues, so I do no think it’s a conflict of having both of them

and the weird this is that , if I preview any account from those pages directly, all works fine

I’m completely at a loss now…

Thx


After Driving myself nuts for over 1 week with this issue, after a lot of different tries, I finally pinpointed the issue. But still think it’s a bug

If I had 2 similar formulas that would cause this issue, but only on my user/computer (which by itself is mind boggling to me, i tried my user on different pc, worked fine, and others did not have same issue)

Formula is: ((NOW() - {{Date_established__c}})/(10002460*60)/365)

And error i could find was: InternalError: too much recursion

It seems to me (could be wrong) that the issue is because of the use of “NOW()” , as probably skuid is trying to always run formula every second?

I would love to get an explanation for that behavior/issue

Thx


Do you possibly have any extensions in your own computer’s browser that would refresh pages to prevent time-outs, or anything along those lines? And, were you able to pinpoint a specific line of code, component, or anything like that?

Although I don’t know specifically how your page is using that formula, I don’t believe that Skuid out of the box would be evaluating this formula every second; just on page /model load. Is there a function or process on the page include that’s being triggered more often than just on page/model load? 


This error is almost always means you have a problem with recursion in JavaScript code, as there isn’t any other way in JavaScript to consume lots of stack.  Sometimes calling a recursive function over and over again, causes the browser to send you Maximum call stack size exceeded error message as the memory that can be allocated for your use is not unlimited. It’s possible to cause infinite recursion in a fully promisified code, too. That can happen if the promises in a chain don’t actually perform any asynchronous execution , in which case control never really returns to the event loop, even though the code otherwise appears to be asynchronous. That’s when it’s useful to wrap your recursive function call into a -


  • setTimeout

  • setImmediate or

  • process.nextTick


Also, you can localize the issue by setting a breakpoint on RangeError type of exception , and then adjust the code appropriately. Moreover, you can managed to find the point that was causing the error by check the error details in the Chrome dev toolbar console , this will give you the functions in the call stack, and guide you towards the recursion that's causing the error.

Reply