Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Kid Stack Size Limit Exceeded

199 views
Skip to first unread message

Gorazd Petrovič

unread,
Jul 19, 2023, 4:14:34 AM7/19/23
to
Please help, since I am totaly stuck with the following. Any suggestion from the VO gurus would be appreciated!

So, having problem with "Kid Stack Size Limit Exceeded" I did a simple test. I wrote a function Recursion_test() which I called recursively. The function gets called 664 times and then throws error "Kid Stack Size Limit Exceeded".
Given the fact that there are no additional objects instanciated and no additional variables initialized I expected the error would be corrected by assigning proper value to SetKidStackSize(), but this was not the case. It seems there is another limitation set in CAVO which I do not know how to remove.

This is the function:
FUNCTION Recursion_test(nLevel)
Default(@nLevel,1)
nLevel:=nLevel+1
Recursion_test(nLevel)
RETURN

And these are values when error occurs:
Memory(MEMORY_STACKKID) 678, SetKidStackSize(0) is set to 8192
Memory(MEMORY_REGISTERKID) 65, SetMaxRegisteredKids(0) is set to 10000
Memory(MEMORY_REGISTERAXIT) 222, SetMaxRegisteredAxitMethods(0) is set to 64000
MEMORY_STACK_SIZE 1069056, MEMORY_STACK_FREE 1035688
MEMORY_REGISTEREXIT_COUNT 3

As you can see none of the parameters is over the limit.

Deckard42

unread,
Jul 19, 2023, 8:31:38 AM7/19/23
to
have you tried increasing the value of Project settings/Linker/Stack size?

Gorazd Petrovič

unread,
Jul 21, 2023, 7:26:48 AM7/21/23
to
I have tried but increasing the value of Project settings/Linker/Stack size does not help.

When error occurs there is still plenty of stack space available. MEMORY_STACK_FREE shows more than 1Mb, while used stack space is 33kb (MEMORY_STACK_SIZE minus MEMORY_STACK_FREE) and remains the same even if I increase stack size in project settings.

There must be a limit somewhere else. I just can not believe that VO allows only 664 levels of recursion.

Would you be kind enough to run the simple recursion function below and see what the limit in your VO installation is?

FUNCTION Recursion_test(nLevel)
Default(@nLevel,1)
nLevel:=nLevel+1
? "level of recursion "
?? nLevel
Recursion_test(nLevel)
RETURN

Jamal

unread,
Jul 24, 2023, 2:30:26 PM7/24/23
to
I see the same issue. I suggest your post your question to the forum at
https://www.xsharp.eu/forum

Robert may be able to shed some light on the stack kid size limits.

Jamal

Gorazd Petrovič

unread,
Jul 26, 2023, 5:52:08 AM7/26/23
to
Jamal,
thanks for your effort. I will do as you suggested.
Gorazd

Wolfgang Riedmann

unread,
Jul 26, 2023, 12:08:00 PM7/26/23
to
For all that are reading here: Robert has answered that this is not
possible to solve because the number of recursions is limited (is
limited also in X#, but the limit is a bit larger)

Wolfgang
--

Jamal

unread,
Jul 27, 2023, 11:23:22 PM7/27/23
to

Wolfgang, just for fun, I tested in X# and C# console app.

NET Framework 4.8 (x64 and x86), crashed at 15082

I tested the console in Net Core 7.0 and 8.0 Preview and it crashed at
23895. This result indicates that NET Core is really very efficient.


So, even the limit is much higher in .NET, no one should be doing this.

Gorazd, I suggest that you avoid recursive functions and instead use a
FOR Loop and handle your requirement in a separate function. VO just
cannot handle deep recursions!

Jamal

Gorazd Petrovič

unread,
Jul 28, 2023, 6:55:42 AM7/28/23
to
Jamal,
The beauty of recursion is simplicity for solving problems when you do not know in advance how many iterations will be necessary to go through all levels of hierarchy of the given structure. I am afraid I do not know how to solve my problem with FOR or DO WHILE loop.
15.000 in .NET would definitely solve my problem. Maybe writting DLL in .NET would be the way to go? The problem is that going this way I would have to migrate pretty big chunk of my code from VO to .NET.
Gorazd

Jamal

unread,
Jul 28, 2023, 5:26:04 PM7/28/23
to
Gorazd,


Check the following as a guide.

https://www.refactoring.com/catalog/replaceRecursionWithIteration.html

Jamal

Gorazd Petrovič

unread,
Jul 29, 2023, 8:04:45 AM7/29/23
to
Jamal,
thanks for the information. I will give it a try.
Gorazd

Wolfgang Riedmann

unread,
Aug 1, 2023, 4:41:46 AM8/1/23
to
Hi Gorazd,

it is really easy to move VO code to X# and use it as COM DLL in VO.

I'm doing similar things all the time (mostly interfaces to web
services or databases).
If needed, I can point you to samples and/or documentation.
--

Gorazd Petrovič

unread,
Aug 7, 2023, 7:30:26 AM8/7/23
to
Hi Wolfgang,
Thanks for suggestion. Similary I am using .NET.
Gorazd.
0 new messages