Good to know.

Thanks
---
"No man is an island... except Philip"


On 28 November 2011 02:47, David Jenkins <[email protected]> wrote:

> Thanks for getting back to me, Nigel.  I also posted the problem in the
> Goliath google group, and its creator, Ilya Grigorik, posted that ruby
> fibers, on which Goliath relies, "have a *much* smaller stack, so this is
> not a bug.. you're likely simply  hitting that limit" (his words and
> emphasis). So it could be that I was well within "normal" (i.e., non-fiber)
> stack limits when not calling my code from Goliath, but with Goliath/fibers
> in the equation, I ran out of room.
>
> I've researched the ruby fiber stack a bit, and found this:
> http://redmine.ruby-lang.org/issues/3187, so it seems that 1) there are
> other folks running up against this limit and 2) changing the system stack
> size might not make a difference -- but I'm gonna give it a try, anyway!
>
> Thanks again.
>
>
> On Sun, Nov 27, 2011 at 6:54 AM, Nigel Thorne <[email protected]>wrote:
>
>> As no-one has responded, I thought I would chip in...
>>
>> I'm sure you probably know this... but just in-case,
>>
>> "Stack too deep" literally means you have too many functions calling onto
>> other function, detected by the virtual machine (or OS) to prevent you from
>> getting run away recursion.
>>
>> So.. causes..
>>
>> Either someone is monkey patching something that Parslet is relying on,
>> so the code that is executing is different somehow,
>>
>> OR
>>
>> You are just unlucky, and were running near the stack limit with your
>> existing code but didn't know it and running it from within another calling
>> mechanize has just pushed you over the edge (as it would add it's own calls
>> to the stack).
>>
>> Parsing can be a very stack intensive activity depending on the
>> implementation and the complexity of the document. I believe Parslet will
>> be creating another call on the stack for each sub-entity it starts
>> parsing... so if you have expressions that contains expressions that
>> contain expressions.. etc...
>> then at some point you'll hit the limit..
>>
>> Solution?
>>
>> I'd suggest trying to set your stack depth a little deeper  (
>> http://dalibornasevic.com/posts/5-ruby-stack-level-too-deep-systemstackerror)
>> first.. and see if that's the problem. If you still hit it, then you
>> probably have some run away recursion.. so the code is somehow different in
>> the Goliath environment. If it starts working, then you just have a deep
>> stack.
>>
>> Either you can make this your default stack depth setting, or change your
>> grammar to reduce the number of rules and hence the stack depth.
>>
>> These are just my suppositions, so I hope they are of some help.
>>
>>
>> Cheers
>> Nigel
>> ---
>> "No man is an island... except Philip"
>>
>>
>>
>> On 27 November 2011 07:32, David Jenkins <[email protected]> wrote:
>>
>>> I have an app that uses Parslet and works fine in "normal"
>>> circumstances.  But the same code, when called called from
>>> Goliath.response, gives me "error: stack level too deep".
>>>
>>> Any ideas?
>>>
>>> I'll try and whittle down the code to a reasonable repro size in the
>>> meantime.
>>>
>>> Thanks
>>>
>>> David Jenkins
>>>
>>
>>
>

Reply via email to