Bug 19332 - System.StackOverflowException when trying to compile/evaulate code with very many string additions
Summary: System.StackOverflowException when trying to compile/evaulate code with very ...
Status: NEW
Alias: None
Product: Compilers
Classification: Mono
Component: C# (show other bugs)
Version: 3.2.x
Hardware: PC Windows
: --- normal
Target Milestone: ---
Assignee: Marek Safar
URL:
Depends on:
Blocks:
 
Reported: 2014-04-28 05:39 UTC by Jan Henrik
Modified: 2014-04-28 05:39 UTC (History)
1 user (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments
Example program that uses Evaluator (1.76 KB, text/plain)
2014-04-28 05:39 UTC, Jan Henrik
Details

Description Jan Henrik 2014-04-28 05:39:23 UTC
Created attachment 6661 [details]
Example program that uses Evaluator

We are currently using System.Web.Razor to generate C# code.
On some pages with very much content, we get StackOverflowException when compiling using Mono.CSharp.Evaluator.
Attached is the source code of an example program which tries to evaluate code with very many string additions.

This is a piece of the call stack when the StackOverflowException happens.
The top three items are repeated numerous times.

Mono.CSharp.dll!Mono.CSharp.Binary.DoResolve(Mono.CSharp.ResolveContext ec) + 0x1e8 bytes
Mono.CSharp.dll!Mono.CSharp.Expression.Resolve(Mono.CSharp.ResolveContext ec, Mono.CSharp.ResolveFlags flags) + 0xa0 bytes	Mono.CSharp.dll!Mono.CSharp.Expression.Resolve(Mono.CSharp.ResolveContext rc) + 0x2d bytes
Mono.CSharp.dll!Mono.CSharp.Binary.DoResolve(Mono.CSharp.ResolveContext ec) + 0x1e8 bytes
Mono.CSharp.dll!Mono.CSharp.Expression.Resolve(Mono.CSharp.ResolveContext ec, Mono.CSharp.ResolveFlags flags) + 0xa0 bytes	Mono.CSharp.dll!Mono.CSharp.Expression.Resolve(Mono.CSharp.ResolveContext rc) + 0x2d bytes
Mono.CSharp.dll!Mono.CSharp.Argument.Resolve(Mono.CSharp.ResolveContext ec) + 0x4b bytes
Mono.CSharp.dll!Mono.CSharp.Arguments.Resolve(Mono.CSharp.ResolveContext ec, out bool dynamic) + 0x78 bytes
Mono.CSharp.dll!Mono.CSharp.Invocation.DoResolve(Mono.CSharp.ResolveContext ec) + 0x108 bytes

Note You need to log in before you can comment on or make changes to this bug.