Closed cribeiro84 closed 2 years ago
My first suspicion is that there's a bi-directional dependency, but Lamar is set up to discover those. I'd honestly need a lot more information to make any kind of guess here. Anything you can share about the dependency that causes the problem? Anything unusual about it? Some kind of bi-directional or circular dependency maybe?
My first suspicious was that also but I couldn't find any bi-directional dependency between these two Interfaces. I will try to illustrate my case:
In addition to the test analysis, I've created a dummy InterfaceC and ClassC that has exactly the same constructor of concrete class of InterfaceA that no other place references it and the same issue happes, StackOverflowException. If I remove from the Constructor the reference to InterfaceB, it works.
If you do that, try to create InterfaceB from the container, and see if you hit a breakpoint on the concrete type for InterfaceA. That'll either prove or disprove the bi-directional dependency issue.
I didn't do that test before and I just tried but the InterfaceA was not hit. The InterfaceB instance has been created normally without hitting InterfaceA concrete class/constructor. I'm thinking to download the source code of Lamar and debug it to try to figure out what could be the reason. I believe it's something related to ASP.NET MVC based on .NET Framework 4.8 where I'm trying to introduce Lamar in replacement of StructureMap which was working fine.
Or something in the Lamar planning that finds an infinite loop -- even though it's supposed to find that. If you have R# or Rider you can debug through the Lamar code w/o having to clone it first.
Thanks for the tip, I just installed Rider and now it's throwing StackOverflowException during the initial request which was not happening before. And Rider was able to stop where the code is throwing the exception, it's in Variable.cs at line:
public override int GetHashCode() => (this.VariableType != (Type) null ? this.VariableType.GetHashCode() : 0) * 397 ^ (this.Usage != null ? this.Usage.GetHashCode() : 0);
I was not able to identify for which type it did it, I'm still testing but in case you have any new tip to help on the troubleshooting.
Thanks a lot
This is the whole Stack of the execution:
Variable.GetHashCode() at Variable.cs:line 109 ObjectEqualityComparer<Variable>.GetHashCode() Dictionary<Variable, Expression>.FindEntry() Dictionary<Variable, Expression>.TryGetValue() LambdaDefinition.ExpressionFor() Enumerable.WhereSelectArrayIterator<Variable, Expression>.MoveNext() new List<Expression>() CollectionExtensions.ToReadOnly<System.Linq.Expressions.Expression>() Expression.New() InstanceConstructorFrame.WriteExpressions() [876] InstanceConstructorFrame.WriteExpressions() [875] InstanceConstructorFrame.WriteExpressions() [874] InstanceConstructorFrame.WriteExpressions() [873] InstanceConstructorFrame.WriteExpressions() [872] InstanceConstructorFrame.WriteExpressions() [871] InstanceConstructorFrame.WriteExpressions() [870] InstanceConstructorFrame.WriteExpressions() [869] InstanceConstructorFrame.WriteExpressions() [868] InstanceConstructorFrame.WriteExpressions() [867] InstanceConstructorFrame.WriteExpressions() [866] InstanceConstructorFrame.WriteExpressions() [865] InstanceConstructorFrame.WriteExpressions() [864] InstanceConstructorFrame.WriteExpressions() [863] InstanceConstructorFrame.WriteExpressions() [862] InstanceConstructorFrame.WriteExpressions() [861] InstanceConstructorFrame.WriteExpressions() [860] InstanceConstructorFrame.WriteExpressions() [859] InstanceConstructorFrame.WriteExpressions() [858] InstanceConstructorFrame.WriteExpressions() [857] InstanceConstructorFrame.WriteExpressions() [856] InstanceConstructorFrame.WriteExpressions() [855] InstanceConstructorFrame.WriteExpressions() [854] InstanceConstructorFrame.WriteExpressions() [853] InstanceConstructorFrame.WriteExpressions() [852] InstanceConstructorFrame.WriteExpressions() [851] InstanceConstructorFrame.WriteExpressions() [850] InstanceConstructorFrame.WriteExpressions() [849] InstanceConstructorFrame.WriteExpressions() [848] InstanceConstructorFrame.WriteExpressions() [847] InstanceConstructorFrame.WriteExpressions() [846] InstanceConstructorFrame.WriteExpressions() [845] InstanceConstructorFrame.WriteExpressions() [844] InstanceConstructorFrame.WriteExpressions() [843] InstanceConstructorFrame.WriteExpressions() [842] InstanceConstructorFrame.WriteExpressions() [841] InstanceConstructorFrame.WriteExpressions() [840] InstanceConstructorFrame.WriteExpressions() [839] InstanceConstructorFrame.WriteExpressions() [838] InstanceConstructorFrame.WriteExpressions() [837] InstanceConstructorFrame.WriteExpressions() [836] InstanceConstructorFrame.WriteExpressions() [835] InstanceConstructorFrame.WriteExpressions() [834] InstanceConstructorFrame.WriteExpressions() [833] InstanceConstructorFrame.WriteExpressions() [832] InstanceConstructorFrame.WriteExpressions() [831] InstanceConstructorFrame.WriteExpressions() [830] InstanceConstructorFrame.WriteExpressions() [829] InstanceConstructorFrame.WriteExpressions() [828] InstanceConstructorFrame.WriteExpressions() [827] InstanceConstructorFrame.WriteExpressions() [826] InstanceConstructorFrame.WriteExpressions() [825] InstanceConstructorFrame.WriteExpressions() [824] InstanceConstructorFrame.WriteExpressions() [823] InstanceConstructorFrame.WriteExpressions() [822] InstanceConstructorFrame.WriteExpressions() [821] InstanceConstructorFrame.WriteExpressions() [820] InstanceConstructorFrame.WriteExpressions() [819] InstanceConstructorFrame.WriteExpressions() [818] InstanceConstructorFrame.WriteExpressions() [817] InstanceConstructorFrame.WriteExpressions() [816] InstanceConstructorFrame.WriteExpressions() [815] InstanceConstructorFrame.WriteExpressions() [814] InstanceConstructorFrame.WriteExpressions() [813] InstanceConstructorFrame.WriteExpressions() [812] InstanceConstructorFrame.WriteExpressions() [811] InstanceConstructorFrame.WriteExpressions() [810] InstanceConstructorFrame.WriteExpressions() [809] InstanceConstructorFrame.WriteExpressions() [808] InstanceConstructorFrame.WriteExpressions() [807] InstanceConstructorFrame.WriteExpressions() [806] InstanceConstructorFrame.WriteExpressions() [805] InstanceConstructorFrame.WriteExpressions() [804] InstanceConstructorFrame.WriteExpressions() [803] InstanceConstructorFrame.WriteExpressions() [802] InstanceConstructorFrame.WriteExpressions() [801] InstanceConstructorFrame.WriteExpressions() [800] InstanceConstructorFrame.WriteExpressions() [799] InstanceConstructorFrame.WriteExpressions() [798] InstanceConstructorFrame.WriteExpressions() [797] InstanceConstructorFrame.WriteExpressions() [796] InstanceConstructorFrame.WriteExpressions() [795] InstanceConstructorFrame.WriteExpressions() [794] InstanceConstructorFrame.WriteExpressions() [793] InstanceConstructorFrame.WriteExpressions() [792] InstanceConstructorFrame.WriteExpressions() [791] InstanceConstructorFrame.WriteExpressions() [790] InstanceConstructorFrame.WriteExpressions() [789] InstanceConstructorFrame.WriteExpressions() [788] InstanceConstructorFrame.WriteExpressions() [787] InstanceConstructorFrame.WriteExpressions() [786] InstanceConstructorFrame.WriteExpressions() [785] InstanceConstructorFrame.WriteExpressions() [784] InstanceConstructorFrame.WriteExpressions() [783] InstanceConstructorFrame.WriteExpressions() [782] InstanceConstructorFrame.WriteExpressions() [781] InstanceConstructorFrame.WriteExpressions() [780] InstanceConstructorFrame.WriteExpressions() [779] InstanceConstructorFrame.WriteExpressions() [778] InstanceConstructorFrame.WriteExpressions() [777] InstanceConstructorFrame.WriteExpressions() [776] InstanceConstructorFrame.WriteExpressions() [775] InstanceConstructorFrame.WriteExpressions() [774] InstanceConstructorFrame.WriteExpressions() [773] InstanceConstructorFrame.WriteExpressions() [772] InstanceConstructorFrame.WriteExpressions() [771] InstanceConstructorFrame.WriteExpressions() [770] InstanceConstructorFrame.WriteExpressions() [769] InstanceConstructorFrame.WriteExpressions() [768] InstanceConstructorFrame.WriteExpressions() [767] InstanceConstructorFrame.WriteExpressions() [766] InstanceConstructorFrame.WriteExpressions() [765] InstanceConstructorFrame.WriteExpressions() [764] InstanceConstructorFrame.WriteExpressions() [763] InstanceConstructorFrame.WriteExpressions() [762] InstanceConstructorFrame.WriteExpressions() [761] InstanceConstructorFrame.WriteExpressions() [760] InstanceConstructorFrame.WriteExpressions() [759] InstanceConstructorFrame.WriteExpressions() [758] InstanceConstructorFrame.WriteExpressions() [757] InstanceConstructorFrame.WriteExpressions() [756] InstanceConstructorFrame.WriteExpressions() [755] InstanceConstructorFrame.WriteExpressions() [754] InstanceConstructorFrame.WriteExpressions() [753] InstanceConstructorFrame.WriteExpressions() [752] InstanceConstructorFrame.WriteExpressions() [751] InstanceConstructorFrame.WriteExpressions() [750] InstanceConstructorFrame.WriteExpressions() [749] InstanceConstructorFrame.WriteExpressions() [748] InstanceConstructorFrame.WriteExpressions() [747] InstanceConstructorFrame.WriteExpressions() [746] InstanceConstructorFrame.WriteExpressions() [745] InstanceConstructorFrame.WriteExpressions() [744] InstanceConstructorFrame.WriteExpressions() [743] InstanceConstructorFrame.WriteExpressions() [742] InstanceConstructorFrame.WriteExpressions() [741] InstanceConstructorFrame.WriteExpressions() [740] InstanceConstructorFrame.WriteExpressions() [739] InstanceConstructorFrame.WriteExpressions() [738] InstanceConstructorFrame.WriteExpressions() [737] InstanceConstructorFrame.WriteExpressions() [736] InstanceConstructorFrame.WriteExpressions() [735] InstanceConstructorFrame.WriteExpressions() [734] InstanceConstructorFrame.WriteExpressions() [733] InstanceConstructorFrame.WriteExpressions() [732] InstanceConstructorFrame.WriteExpressions() [731] InstanceConstructorFrame.WriteExpressions() [730] InstanceConstructorFrame.WriteExpressions() [729] InstanceConstructorFrame.WriteExpressions() [728] InstanceConstructorFrame.WriteExpressions() [727] InstanceConstructorFrame.WriteExpressions() [726] InstanceConstructorFrame.WriteExpressions() [725] InstanceConstructorFrame.WriteExpressions() [724] InstanceConstructorFrame.WriteExpressions() [723] InstanceConstructorFrame.WriteExpressions() [722] InstanceConstructorFrame.WriteExpressions() [721] InstanceConstructorFrame.WriteExpressions() [720] InstanceConstructorFrame.WriteExpressions() [719] InstanceConstructorFrame.WriteExpressions() [718] InstanceConstructorFrame.WriteExpressions() [717] InstanceConstructorFrame.WriteExpressions() [716] InstanceConstructorFrame.WriteExpressions() [715] InstanceConstructorFrame.WriteExpressions() [714] InstanceConstructorFrame.WriteExpressions() [713] InstanceConstructorFrame.WriteExpressions() [712] InstanceConstructorFrame.WriteExpressions() [711] InstanceConstructorFrame.WriteExpressions() [710] InstanceConstructorFrame.WriteExpressions() [709] InstanceConstructorFrame.WriteExpressions() [708] InstanceConstructorFrame.WriteExpressions() [707] InstanceConstructorFrame.WriteExpressions() [706] InstanceConstructorFrame.WriteExpressions() [705] InstanceConstructorFrame.WriteExpressions() [704] InstanceConstructorFrame.WriteExpressions() [703] InstanceConstructorFrame.WriteExpressions() [702] InstanceConstructorFrame.WriteExpressions() [701] InstanceConstructorFrame.WriteExpressions() [700] InstanceConstructorFrame.WriteExpressions() [699] InstanceConstructorFrame.WriteExpressions() [698] InstanceConstructorFrame.WriteExpressions() [697] InstanceConstructorFrame.WriteExpressions() [696] InstanceConstructorFrame.WriteExpressions() [695] InstanceConstructorFrame.WriteExpressions() [694] InstanceConstructorFrame.WriteExpressions() [693] InstanceConstructorFrame.WriteExpressions() [692] InstanceConstructorFrame.WriteExpressions() [691] InstanceConstructorFrame.WriteExpressions() [690] InstanceConstructorFrame.WriteExpressions() [689] InstanceConstructorFrame.WriteExpressions() [688] InstanceConstructorFrame.WriteExpressions() [687] InstanceConstructorFrame.WriteExpressions() [686] InstanceConstructorFrame.WriteExpressions() [685] InstanceConstructorFrame.WriteExpressions() [684] InstanceConstructorFrame.WriteExpressions() [683] InstanceConstructorFrame.WriteExpressions() [682] InstanceConstructorFrame.WriteExpressions() [681] InstanceConstructorFrame.WriteExpressions() [680] InstanceConstructorFrame.WriteExpressions() [679] InstanceConstructorFrame.WriteExpressions() [678] InstanceConstructorFrame.WriteExpressions() [677] InstanceConstructorFrame.WriteExpressions() [676] InstanceConstructorFrame.WriteExpressions() [675] InstanceConstructorFrame.WriteExpressions() [674] InstanceConstructorFrame.WriteExpressions() [673] InstanceConstructorFrame.WriteExpressions() [672] InstanceConstructorFrame.WriteExpressions() [671] InstanceConstructorFrame.WriteExpressions() [670] InstanceConstructorFrame.WriteExpressions() [669] InstanceConstructorFrame.WriteExpressions() [668] InstanceConstructorFrame.WriteExpressions() [667] InstanceConstructorFrame.WriteExpressions() [666] InstanceConstructorFrame.WriteExpressions() [665] InstanceConstructorFrame.WriteExpressions() [664] InstanceConstructorFrame.WriteExpressions() [663] InstanceConstructorFrame.WriteExpressions() [662] InstanceConstructorFrame.WriteExpressions() [661] InstanceConstructorFrame.WriteExpressions() [660] InstanceConstructorFrame.WriteExpressions() [659] InstanceConstructorFrame.WriteExpressions() [658] InstanceConstructorFrame.WriteExpressions() [657] InstanceConstructorFrame.WriteExpressions() [656] InstanceConstructorFrame.WriteExpressions() [655] InstanceConstructorFrame.WriteExpressions() [654] InstanceConstructorFrame.WriteExpressions() [653] InstanceConstructorFrame.WriteExpressions() [652] InstanceConstructorFrame.WriteExpressions() [651] InstanceConstructorFrame.WriteExpressions() [650] InstanceConstructorFrame.WriteExpressions() [649] InstanceConstructorFrame.WriteExpressions() [648] InstanceConstructorFrame.WriteExpressions() [647] InstanceConstructorFrame.WriteExpressions() [646] InstanceConstructorFrame.WriteExpressions() [645] InstanceConstructorFrame.WriteExpressions() [644] InstanceConstructorFrame.WriteExpressions() [643] InstanceConstructorFrame.WriteExpressions() [642] InstanceConstructorFrame.WriteExpressions() [641] InstanceConstructorFrame.WriteExpressions() [640] InstanceConstructorFrame.WriteExpressions() [639] InstanceConstructorFrame.WriteExpressions() [638] InstanceConstructorFrame.WriteExpressions() [637] InstanceConstructorFrame.WriteExpressions() [636] InstanceConstructorFrame.WriteExpressions() [635] InstanceConstructorFrame.WriteExpressions() [634] InstanceConstructorFrame.WriteExpressions() [633] InstanceConstructorFrame.WriteExpressions() [632] InstanceConstructorFrame.WriteExpressions() [631] InstanceConstructorFrame.WriteExpressions() [630] InstanceConstructorFrame.WriteExpressions() [629] InstanceConstructorFrame.WriteExpressions() [628] InstanceConstructorFrame.WriteExpressions() [627] InstanceConstructorFrame.WriteExpressions() [626] InstanceConstructorFrame.WriteExpressions() [625] InstanceConstructorFrame.WriteExpressions() [624] InstanceConstructorFrame.WriteExpressions() [623] InstanceConstructorFrame.WriteExpressions() [622] InstanceConstructorFrame.WriteExpressions() [621] InstanceConstructorFrame.WriteExpressions() [620] InstanceConstructorFrame.WriteExpressions() [619] InstanceConstructorFrame.WriteExpressions() [618] InstanceConstructorFrame.WriteExpressions() [617] InstanceConstructorFrame.WriteExpressions() [616] InstanceConstructorFrame.WriteExpressions() [615] InstanceConstructorFrame.WriteExpressions() [614] InstanceConstructorFrame.WriteExpressions() [613] InstanceConstructorFrame.WriteExpressions() [612] InstanceConstructorFrame.WriteExpressions() [611] InstanceConstructorFrame.WriteExpressions() [610] InstanceConstructorFrame.WriteExpressions() [609] InstanceConstructorFrame.WriteExpressions() [608] InstanceConstructorFrame.WriteExpressions() [607] InstanceConstructorFrame.WriteExpressions() [606] InstanceConstructorFrame.WriteExpressions() [605] InstanceConstructorFrame.WriteExpressions() [604] InstanceConstructorFrame.WriteExpressions() [603] InstanceConstructorFrame.WriteExpressions() [602] InstanceConstructorFrame.WriteExpressions() [601] InstanceConstructorFrame.WriteExpressions() [600] InstanceConstructorFrame.WriteExpressions() [599] InstanceConstructorFrame.WriteExpressions() [598] InstanceConstructorFrame.WriteExpressions() [597] InstanceConstructorFrame.WriteExpressions() [596] InstanceConstructorFrame.WriteExpressions() [595] InstanceConstructorFrame.WriteExpressions() [594] InstanceConstructorFrame.WriteExpressions() [593] InstanceConstructorFrame.WriteExpressions() [592] InstanceConstructorFrame.WriteExpressions() [591] InstanceConstructorFrame.WriteExpressions() [590] InstanceConstructorFrame.WriteExpressions() [589] InstanceConstructorFrame.WriteExpressions() [588] InstanceConstructorFrame.WriteExpressions() [587] InstanceConstructorFrame.WriteExpressions() [586] InstanceConstructorFrame.WriteExpressions() [585] InstanceConstructorFrame.WriteExpressions() [584] InstanceConstructorFrame.WriteExpressions() [583] InstanceConstructorFrame.WriteExpressions() [582] InstanceConstructorFrame.WriteExpressions() [581] InstanceConstructorFrame.WriteExpressions() [580] InstanceConstructorFrame.WriteExpressions() [579] InstanceConstructorFrame.WriteExpressions() [578] InstanceConstructorFrame.WriteExpressions() [577] InstanceConstructorFrame.WriteExpressions() [576] InstanceConstructorFrame.WriteExpressions() [575] InstanceConstructorFrame.WriteExpressions() [574] InstanceConstructorFrame.WriteExpressions() [573] InstanceConstructorFrame.WriteExpressions() [572] InstanceConstructorFrame.WriteExpressions() [571] InstanceConstructorFrame.WriteExpressions() [570] InstanceConstructorFrame.WriteExpressions() [569] InstanceConstructorFrame.WriteExpressions() [568] InstanceConstructorFrame.WriteExpressions() [567] InstanceConstructorFrame.WriteExpressions() [566] InstanceConstructorFrame.WriteExpressions() [565] InstanceConstructorFrame.WriteExpressions() [564] InstanceConstructorFrame.WriteExpressions() [563] InstanceConstructorFrame.WriteExpressions() [562] InstanceConstructorFrame.WriteExpressions() [561] InstanceConstructorFrame.WriteExpressions() [560] InstanceConstructorFrame.WriteExpressions() [559] InstanceConstructorFrame.WriteExpressions() [558] InstanceConstructorFrame.WriteExpressions() [557] InstanceConstructorFrame.WriteExpressions() [556] InstanceConstructorFrame.WriteExpressions() [555] InstanceConstructorFrame.WriteExpressions() [554] InstanceConstructorFrame.WriteExpressions() [553] InstanceConstructorFrame.WriteExpressions() [552] InstanceConstructorFrame.WriteExpressions() [551] InstanceConstructorFrame.WriteExpressions() [550] InstanceConstructorFrame.WriteExpressions() [549] InstanceConstructorFrame.WriteExpressions() [548] InstanceConstructorFrame.WriteExpressions() [547] InstanceConstructorFrame.WriteExpressions() [546] InstanceConstructorFrame.WriteExpressions() [545] InstanceConstructorFrame.WriteExpressions() [544] InstanceConstructorFrame.WriteExpressions() [543] InstanceConstructorFrame.WriteExpressions() [542] InstanceConstructorFrame.WriteExpressions() [541] InstanceConstructorFrame.WriteExpressions() [540] InstanceConstructorFrame.WriteExpressions() [539] InstanceConstructorFrame.WriteExpressions() [538] InstanceConstructorFrame.WriteExpressions() [537] InstanceConstructorFrame.WriteExpressions() [536] InstanceConstructorFrame.WriteExpressions() [535] InstanceConstructorFrame.WriteExpressions() [534] InstanceConstructorFrame.WriteExpressions() [533] InstanceConstructorFrame.WriteExpressions() [532] InstanceConstructorFrame.WriteExpressions() [531] InstanceConstructorFrame.WriteExpressions() [530] InstanceConstructorFrame.WriteExpressions() [529] InstanceConstructorFrame.WriteExpressions() [528] InstanceConstructorFrame.WriteExpressions() [527] InstanceConstructorFrame.WriteExpressions() [526] InstanceConstructorFrame.WriteExpressions() [525] InstanceConstructorFrame.WriteExpressions() [524] InstanceConstructorFrame.WriteExpressions() [523] InstanceConstructorFrame.WriteExpressions() [522] InstanceConstructorFrame.WriteExpressions() [521] InstanceConstructorFrame.WriteExpressions() [520] InstanceConstructorFrame.WriteExpressions() [519] InstanceConstructorFrame.WriteExpressions() [518] InstanceConstructorFrame.WriteExpressions() [517] InstanceConstructorFrame.WriteExpressions() [516] InstanceConstructorFrame.WriteExpressions() [515] InstanceConstructorFrame.WriteExpressions() [514] InstanceConstructorFrame.WriteExpressions() [513] InstanceConstructorFrame.WriteExpressions() [512] InstanceConstructorFrame.WriteExpressions() [511] InstanceConstructorFrame.WriteExpressions() [510] InstanceConstructorFrame.WriteExpressions() [509] InstanceConstructorFrame.WriteExpressions() [508] InstanceConstructorFrame.WriteExpressions() [507] InstanceConstructorFrame.WriteExpressions() [506] InstanceConstructorFrame.WriteExpressions() [505] InstanceConstructorFrame.WriteExpressions() [504] InstanceConstructorFrame.WriteExpressions() [503] InstanceConstructorFrame.WriteExpressions() [502] InstanceConstructorFrame.WriteExpressions() [501] InstanceConstructorFrame.WriteExpressions() [500] InstanceConstructorFrame.WriteExpressions() [499] InstanceConstructorFrame.WriteExpressions() [498] InstanceConstructorFrame.WriteExpressions() [497] InstanceConstructorFrame.WriteExpressions() [496] InstanceConstructorFrame.WriteExpressions() [495] InstanceConstructorFrame.WriteExpressions() [494] InstanceConstructorFrame.WriteExpressions() [493] InstanceConstructorFrame.WriteExpressions() [492] InstanceConstructorFrame.WriteExpressions() [491] InstanceConstructorFrame.WriteExpressions() [490] InstanceConstructorFrame.WriteExpressions() [489] InstanceConstructorFrame.WriteExpressions() [488] InstanceConstructorFrame.WriteExpressions() [487] InstanceConstructorFrame.WriteExpressions() [486] InstanceConstructorFrame.WriteExpressions() [485] InstanceConstructorFrame.WriteExpressions() [484] InstanceConstructorFrame.WriteExpressions() [483] InstanceConstructorFrame.WriteExpressions() [482] InstanceConstructorFrame.WriteExpressions() [481] InstanceConstructorFrame.WriteExpressions() [480] InstanceConstructorFrame.WriteExpressions() [479] InstanceConstructorFrame.WriteExpressions() [478] InstanceConstructorFrame.WriteExpressions() [477] InstanceConstructorFrame.WriteExpressions() [476] InstanceConstructorFrame.WriteExpressions() [475] InstanceConstructorFrame.WriteExpressions() [474] InstanceConstructorFrame.WriteExpressions() [473] InstanceConstructorFrame.WriteExpressions() [472] InstanceConstructorFrame.WriteExpressions() [471] InstanceConstructorFrame.WriteExpressions() [470] InstanceConstructorFrame.WriteExpressions() [469] InstanceConstructorFrame.WriteExpressions() [468] InstanceConstructorFrame.WriteExpressions() [467] InstanceConstructorFrame.WriteExpressions() [466] InstanceConstructorFrame.WriteExpressions() [465] InstanceConstructorFrame.WriteExpressions() [464] InstanceConstructorFrame.WriteExpressions() [463] InstanceConstructorFrame.WriteExpressions() [462] InstanceConstructorFrame.WriteExpressions() [461] InstanceConstructorFrame.WriteExpressions() [460] ListAssignmentFrame<IBusinessValidatorFor<User, UserMgmtContext>>.WriteExpressions() InstanceConstructorFrame.WriteExpressions() [459] InstanceConstructorFrame.WriteExpressions() [458] InstanceConstructorFrame.WriteExpressions() [457] InstanceConstructorFrame.WriteExpressions() [456] InstanceConstructorFrame.WriteExpressions() [455] InstanceConstructorFrame.WriteExpressions() [454] InstanceConstructorFrame.WriteExpressions() [453] InstanceConstructorFrame.WriteExpressions() [452] InstanceConstructorFrame.WriteExpressions() [451] InstanceConstructorFrame.WriteExpressions() [450] InstanceConstructorFrame.WriteExpressions() [449] InstanceConstructorFrame.WriteExpressions() [448] InstanceConstructorFrame.WriteExpressions() [447] InstanceConstructorFrame.WriteExpressions() [446] InstanceConstructorFrame.WriteExpressions() [445] InstanceConstructorFrame.WriteExpressions() [444] InstanceConstructorFrame.WriteExpressions() [443] InstanceConstructorFrame.WriteExpressions() [442] InstanceConstructorFrame.WriteExpressions() [441] InstanceConstructorFrame.WriteExpressions() [440] InstanceConstructorFrame.WriteExpressions() [439] InstanceConstructorFrame.WriteExpressions() [438] InstanceConstructorFrame.WriteExpressions() [437] InstanceConstructorFrame.WriteExpressions() [436] InstanceConstructorFrame.WriteExpressions() [435] InstanceConstructorFrame.WriteExpressions() [434] InstanceConstructorFrame.WriteExpressions() [433] InstanceConstructorFrame.WriteExpressions() [432] InstanceConstructorFrame.WriteExpressions() [431] InstanceConstructorFrame.WriteExpressions() [430] InstanceConstructorFrame.WriteExpressions() [429] InstanceConstructorFrame.WriteExpressions() [428] InstanceConstructorFrame.WriteExpressions() [427] InstanceConstructorFrame.WriteExpressions() [426] InstanceConstructorFrame.WriteExpressions() [425] InstanceConstructorFrame.WriteExpressions() [424] InstanceConstructorFrame.WriteExpressions() [423] InstanceConstructorFrame.WriteExpressions() [422] InstanceConstructorFrame.WriteExpressions() [421] InstanceConstructorFrame.WriteExpressions() [420] InstanceConstructorFrame.WriteExpressions() [419] InstanceConstructorFrame.WriteExpressions() [418] InstanceConstructorFrame.WriteExpressions() [417] InstanceConstructorFrame.WriteExpressions() [416] InstanceConstructorFrame.WriteExpressions() [415] InstanceConstructorFrame.WriteExpressions() [414] InstanceConstructorFrame.WriteExpressions() [413] InstanceConstructorFrame.WriteExpressions() [412] InstanceConstructorFrame.WriteExpressions() [411] InstanceConstructorFrame.WriteExpressions() [410] InstanceConstructorFrame.WriteExpressions() [409] InstanceConstructorFrame.WriteExpressions() [408] InstanceConstructorFrame.WriteExpressions() [407] InstanceConstructorFrame.WriteExpressions() [406] InstanceConstructorFrame.WriteExpressions() [405] InstanceConstructorFrame.WriteExpressions() [404] InstanceConstructorFrame.WriteExpressions() [403] InstanceConstructorFrame.WriteExpressions() [402] InstanceConstructorFrame.WriteExpressions() [401] InstanceConstructorFrame.WriteExpressions() [400] InstanceConstructorFrame.WriteExpressions() [399] InstanceConstructorFrame.WriteExpressions() [398] InstanceConstructorFrame.WriteExpressions() [397] InstanceConstructorFrame.WriteExpressions() [396] InstanceConstructorFrame.WriteExpressions() [395] InstanceConstructorFrame.WriteExpressions() [394] InstanceConstructorFrame.WriteExpressions() [393] InstanceConstructorFrame.WriteExpressions() [392] InstanceConstructorFrame.WriteExpressions() [391] InstanceConstructorFrame.WriteExpressions() [390] InstanceConstructorFrame.WriteExpressions() [389] InstanceConstructorFrame.WriteExpressions() [388] InstanceConstructorFrame.WriteExpressions() [387] InstanceConstructorFrame.WriteExpressions() [386] InstanceConstructorFrame.WriteExpressions() [385] InstanceConstructorFrame.WriteExpressions() [384] InstanceConstructorFrame.WriteExpressions() [383] InstanceConstructorFrame.WriteExpressions() [382] InstanceConstructorFrame.WriteExpressions() [381] InstanceConstructorFrame.WriteExpressions() [380] InstanceConstructorFrame.WriteExpressions() [379] InstanceConstructorFrame.WriteExpressions() [378] InstanceConstructorFrame.WriteExpressions() [377] InstanceConstructorFrame.WriteExpressions() [376] InstanceConstructorFrame.WriteExpressions() [375] InstanceConstructorFrame.WriteExpressions() [374] InstanceConstructorFrame.WriteExpressions() [373] InstanceConstructorFrame.WriteExpressions() [372] InstanceConstructorFrame.WriteExpressions() [371] InstanceConstructorFrame.WriteExpressions() [370] InstanceConstructorFrame.WriteExpressions() [369] InstanceConstructorFrame.WriteExpressions() [368] InstanceConstructorFrame.WriteExpressions() [367] InstanceConstructorFrame.WriteExpressions() [366] InstanceConstructorFrame.WriteExpressions() [365] InstanceConstructorFrame.WriteExpressions() [364] InstanceConstructorFrame.WriteExpressions() [363] InstanceConstructorFrame.WriteExpressions() [362] InstanceConstructorFrame.WriteExpressions() [361] InstanceConstructorFrame.WriteExpressions() [360] InstanceConstructorFrame.WriteExpressions() [359] InstanceConstructorFrame.WriteExpressions() [358] InstanceConstructorFrame.WriteExpressions() [357] InstanceConstructorFrame.WriteExpressions() [356] InstanceConstructorFrame.WriteExpressions() [355] InstanceConstructorFrame.WriteExpressions() [354] InstanceConstructorFrame.WriteExpressions() [353] InstanceConstructorFrame.WriteExpressions() [352] InstanceConstructorFrame.WriteExpressions() [351] InstanceConstructorFrame.WriteExpressions() [350] InstanceConstructorFrame.WriteExpressions() [349] InstanceConstructorFrame.WriteExpressions() [348] InstanceConstructorFrame.WriteExpressions() [347] InstanceConstructorFrame.WriteExpressions() [346] InstanceConstructorFrame.WriteExpressions() [345] InstanceConstructorFrame.WriteExpressions() [344] InstanceConstructorFrame.WriteExpressions() [343] InstanceConstructorFrame.WriteExpressions() [342] InstanceConstructorFrame.WriteExpressions() [341] InstanceConstructorFrame.WriteExpressions() [340] InstanceConstructorFrame.WriteExpressions() [339] InstanceConstructorFrame.WriteExpressions() [338] InstanceConstructorFrame.WriteExpressions() [337] InstanceConstructorFrame.WriteExpressions() [336] InstanceConstructorFrame.WriteExpressions() [335] InstanceConstructorFrame.WriteExpressions() [334] InstanceConstructorFrame.WriteExpressions() [333] InstanceConstructorFrame.WriteExpressions() [332] InstanceConstructorFrame.WriteExpressions() [331] InstanceConstructorFrame.WriteExpressions() [330] InstanceConstructorFrame.WriteExpressions() [329] InstanceConstructorFrame.WriteExpressions() [328] InstanceConstructorFrame.WriteExpressions() [327] InstanceConstructorFrame.WriteExpressions() [326] InstanceConstructorFrame.WriteExpressions() [325] InstanceConstructorFrame.WriteExpressions() [324] InstanceConstructorFrame.WriteExpressions() [323] InstanceConstructorFrame.WriteExpressions() [322] InstanceConstructorFrame.WriteExpressions() [321] InstanceConstructorFrame.WriteExpressions() [320] InstanceConstructorFrame.WriteExpressions() [319] InstanceConstructorFrame.WriteExpressions() [318] InstanceConstructorFrame.WriteExpressions() [317] InstanceConstructorFrame.WriteExpressions() [316] InstanceConstructorFrame.WriteExpressions() [315] InstanceConstructorFrame.WriteExpressions() [314] InstanceConstructorFrame.WriteExpressions() [313] InstanceConstructorFrame.WriteExpressions() [312] InstanceConstructorFrame.WriteExpressions() [311] InstanceConstructorFrame.WriteExpressions() [310] InstanceConstructorFrame.WriteExpressions() [309] InstanceConstructorFrame.WriteExpressions() [308] InstanceConstructorFrame.WriteExpressions() [307] InstanceConstructorFrame.WriteExpressions() [306] InstanceConstructorFrame.WriteExpressions() [305] InstanceConstructorFrame.WriteExpressions() [304] InstanceConstructorFrame.WriteExpressions() [303] InstanceConstructorFrame.WriteExpressions() [302] InstanceConstructorFrame.WriteExpressions() [301] InstanceConstructorFrame.WriteExpressions() [300] InstanceConstructorFrame.WriteExpressions() [299] InstanceConstructorFrame.WriteExpressions() [298] InstanceConstructorFrame.WriteExpressions() [297] InstanceConstructorFrame.WriteExpressions() [296] InstanceConstructorFrame.WriteExpressions() [295] InstanceConstructorFrame.WriteExpressions() [294] InstanceConstructorFrame.WriteExpressions() [293] InstanceConstructorFrame.WriteExpressions() [292] InstanceConstructorFrame.WriteExpressions() [291] InstanceConstructorFrame.WriteExpressions() [290] InstanceConstructorFrame.WriteExpressions() [289] InstanceConstructorFrame.WriteExpressions() [288] InstanceConstructorFrame.WriteExpressions() [287] InstanceConstructorFrame.WriteExpressions() [286] InstanceConstructorFrame.WriteExpressions() [285] InstanceConstructorFrame.WriteExpressions() [284] InstanceConstructorFrame.WriteExpressions() [283] InstanceConstructorFrame.WriteExpressions() [282] InstanceConstructorFrame.WriteExpressions() [281] InstanceConstructorFrame.WriteExpressions() [280] InstanceConstructorFrame.WriteExpressions() [279] InstanceConstructorFrame.WriteExpressions() [278] InstanceConstructorFrame.WriteExpressions() [277] InstanceConstructorFrame.WriteExpressions() [276] InstanceConstructorFrame.WriteExpressions() [275] InstanceConstructorFrame.WriteExpressions() [274] InstanceConstructorFrame.WriteExpressions() [273] InstanceConstructorFrame.WriteExpressions() [272] InstanceConstructorFrame.WriteExpressions() [271] InstanceConstructorFrame.WriteExpressions() [270] InstanceConstructorFrame.WriteExpressions() [269] InstanceConstructorFrame.WriteExpressions() [268] InstanceConstructorFrame.WriteExpressions() [267] InstanceConstructorFrame.WriteExpressions() [266] InstanceConstructorFrame.WriteExpressions() [265] InstanceConstructorFrame.WriteExpressions() [264] InstanceConstructorFrame.WriteExpressions() [263] InstanceConstructorFrame.WriteExpressions() [262] InstanceConstructorFrame.WriteExpressions() [261] InstanceConstructorFrame.WriteExpressions() [260] InstanceConstructorFrame.WriteExpressions() [259] InstanceConstructorFrame.WriteExpressions() [258] InstanceConstructorFrame.WriteExpressions() [257] InstanceConstructorFrame.WriteExpressions() [256] InstanceConstructorFrame.WriteExpressions() [255] InstanceConstructorFrame.WriteExpressions() [254] InstanceConstructorFrame.WriteExpressions() [253] InstanceConstructorFrame.WriteExpressions() [252] InstanceConstructorFrame.WriteExpressions() [251] InstanceConstructorFrame.WriteExpressions() [250] InstanceConstructorFrame.WriteExpressions() [249] InstanceConstructorFrame.WriteExpressions() [248] InstanceConstructorFrame.WriteExpressions() [247] InstanceConstructorFrame.WriteExpressions() [246] InstanceConstructorFrame.WriteExpressions() [245] InstanceConstructorFrame.WriteExpressions() [244] InstanceConstructorFrame.WriteExpressions() [243] InstanceConstructorFrame.WriteExpressions() [242] InstanceConstructorFrame.WriteExpressions() [241] InstanceConstructorFrame.WriteExpressions() [240] InstanceConstructorFrame.WriteExpressions() [239] InstanceConstructorFrame.WriteExpressions() [238] InstanceConstructorFrame.WriteExpressions() [237] InstanceConstructorFrame.WriteExpressions() [236] InstanceConstructorFrame.WriteExpressions() [235] InstanceConstructorFrame.WriteExpressions() [234] InstanceConstructorFrame.WriteExpressions() [233] InstanceConstructorFrame.WriteExpressions() [232] InstanceConstructorFrame.WriteExpressions() [231] InstanceConstructorFrame.WriteExpressions() [230] InstanceConstructorFrame.WriteExpressions() [229] InstanceConstructorFrame.WriteExpressions() [228] InstanceConstructorFrame.WriteExpressions() [227] InstanceConstructorFrame.WriteExpressions() [226] InstanceConstructorFrame.WriteExpressions() [225] InstanceConstructorFrame.WriteExpressions() [224] InstanceConstructorFrame.WriteExpressions() [223] InstanceConstructorFrame.WriteExpressions() [222] InstanceConstructorFrame.WriteExpressions() [221] InstanceConstructorFrame.WriteExpressions() [220] InstanceConstructorFrame.WriteExpressions() [219] InstanceConstructorFrame.WriteExpressions() [218] InstanceConstructorFrame.WriteExpressions() [217] InstanceConstructorFrame.WriteExpressions() [216] InstanceConstructorFrame.WriteExpressions() [215] InstanceConstructorFrame.WriteExpressions() [214] InstanceConstructorFrame.WriteExpressions() [213] InstanceConstructorFrame.WriteExpressions() [212] InstanceConstructorFrame.WriteExpressions() [211] InstanceConstructorFrame.WriteExpressions() [210] InstanceConstructorFrame.WriteExpressions() [209] InstanceConstructorFrame.WriteExpressions() [208] InstanceConstructorFrame.WriteExpressions() [207] InstanceConstructorFrame.WriteExpressions() [206] InstanceConstructorFrame.WriteExpressions() [205] InstanceConstructorFrame.WriteExpressions() [204] InstanceConstructorFrame.WriteExpressions() [203] InstanceConstructorFrame.WriteExpressions() [202] InstanceConstructorFrame.WriteExpressions() [201] InstanceConstructorFrame.WriteExpressions() [200] InstanceConstructorFrame.WriteExpressions() [199] InstanceConstructorFrame.WriteExpressions() [198] InstanceConstructorFrame.WriteExpressions() [197] InstanceConstructorFrame.WriteExpressions() [196] InstanceConstructorFrame.WriteExpressions() [195] InstanceConstructorFrame.WriteExpressions() [194] InstanceConstructorFrame.WriteExpressions() [193] InstanceConstructorFrame.WriteExpressions() [192] InstanceConstructorFrame.WriteExpressions() [191] InstanceConstructorFrame.WriteExpressions() [190] InstanceConstructorFrame.WriteExpressions() [189] InstanceConstructorFrame.WriteExpressions() [188] InstanceConstructorFrame.WriteExpressions() [187] InstanceConstructorFrame.WriteExpressions() [186] InstanceConstructorFrame.WriteExpressions() [185] InstanceConstructorFrame.WriteExpressions() [184] InstanceConstructorFrame.WriteExpressions() [183] InstanceConstructorFrame.WriteExpressions() [182] InstanceConstructorFrame.WriteExpressions() [181] InstanceConstructorFrame.WriteExpressions() [180] InstanceConstructorFrame.WriteExpressions() [179] InstanceConstructorFrame.WriteExpressions() [178] InstanceConstructorFrame.WriteExpressions() [177] InstanceConstructorFrame.WriteExpressions() [176] InstanceConstructorFrame.WriteExpressions() [175] InstanceConstructorFrame.WriteExpressions() [174] InstanceConstructorFrame.WriteExpressions() [173] InstanceConstructorFrame.WriteExpressions() [172] InstanceConstructorFrame.WriteExpressions() [171] InstanceConstructorFrame.WriteExpressions() [170] InstanceConstructorFrame.WriteExpressions() [169] InstanceConstructorFrame.WriteExpressions() [168] InstanceConstructorFrame.WriteExpressions() [167] InstanceConstructorFrame.WriteExpressions() [166] InstanceConstructorFrame.WriteExpressions() [165] InstanceConstructorFrame.WriteExpressions() [164] InstanceConstructorFrame.WriteExpressions() [163] InstanceConstructorFrame.WriteExpressions() [162] InstanceConstructorFrame.WriteExpressions() [161] InstanceConstructorFrame.WriteExpressions() [160] InstanceConstructorFrame.WriteExpressions() [159] InstanceConstructorFrame.WriteExpressions() [158] InstanceConstructorFrame.WriteExpressions() [157] InstanceConstructorFrame.WriteExpressions() [156] InstanceConstructorFrame.WriteExpressions() [155] InstanceConstructorFrame.WriteExpressions() [154] InstanceConstructorFrame.WriteExpressions() [153] InstanceConstructorFrame.WriteExpressions() [152] InstanceConstructorFrame.WriteExpressions() [151] InstanceConstructorFrame.WriteExpressions() [150] InstanceConstructorFrame.WriteExpressions() [149] InstanceConstructorFrame.WriteExpressions() [148] InstanceConstructorFrame.WriteExpressions() [147] InstanceConstructorFrame.WriteExpressions() [146] InstanceConstructorFrame.WriteExpressions() [145] InstanceConstructorFrame.WriteExpressions() [144] InstanceConstructorFrame.WriteExpressions() [143] InstanceConstructorFrame.WriteExpressions() [142] InstanceConstructorFrame.WriteExpressions() [141] InstanceConstructorFrame.WriteExpressions() [140] InstanceConstructorFrame.WriteExpressions() [139] InstanceConstructorFrame.WriteExpressions() [138] InstanceConstructorFrame.WriteExpressions() [137] InstanceConstructorFrame.WriteExpressions() [136] InstanceConstructorFrame.WriteExpressions() [135] InstanceConstructorFrame.WriteExpressions() [134] InstanceConstructorFrame.WriteExpressions() [133] InstanceConstructorFrame.WriteExpressions() [132] InstanceConstructorFrame.WriteExpressions() [131] InstanceConstructorFrame.WriteExpressions() [130] InstanceConstructorFrame.WriteExpressions() [129] InstanceConstructorFrame.WriteExpressions() [128] InstanceConstructorFrame.WriteExpressions() [127] InstanceConstructorFrame.WriteExpressions() [126] InstanceConstructorFrame.WriteExpressions() [125] InstanceConstructorFrame.WriteExpressions() [124] InstanceConstructorFrame.WriteExpressions() [123] InstanceConstructorFrame.WriteExpressions() [122] InstanceConstructorFrame.WriteExpressions() [121] InstanceConstructorFrame.WriteExpressions() [120] InstanceConstructorFrame.WriteExpressions() [119] InstanceConstructorFrame.WriteExpressions() [118] InstanceConstructorFrame.WriteExpressions() [117] InstanceConstructorFrame.WriteExpressions() [116] InstanceConstructorFrame.WriteExpressions() [115] InstanceConstructorFrame.WriteExpressions() [114] InstanceConstructorFrame.WriteExpressions() [113] InstanceConstructorFrame.WriteExpressions() [112] InstanceConstructorFrame.WriteExpressions() [111] InstanceConstructorFrame.WriteExpressions() [110] InstanceConstructorFrame.WriteExpressions() [109] InstanceConstructorFrame.WriteExpressions() [108] InstanceConstructorFrame.WriteExpressions() [107] InstanceConstructorFrame.WriteExpressions() [106] InstanceConstructorFrame.WriteExpressions() [105] InstanceConstructorFrame.WriteExpressions() [104] InstanceConstructorFrame.WriteExpressions() [103] InstanceConstructorFrame.WriteExpressions() [102] InstanceConstructorFrame.WriteExpressions() [101] InstanceConstructorFrame.WriteExpressions() [100] InstanceConstructorFrame.WriteExpressions() [99] InstanceConstructorFrame.WriteExpressions() [98] InstanceConstructorFrame.WriteExpressions() [97] InstanceConstructorFrame.WriteExpressions() [96] InstanceConstructorFrame.WriteExpressions() [95] InstanceConstructorFrame.WriteExpressions() [94] InstanceConstructorFrame.WriteExpressions() [93] InstanceConstructorFrame.WriteExpressions() [92] InstanceConstructorFrame.WriteExpressions() [91] InstanceConstructorFrame.WriteExpressions() [90] InstanceConstructorFrame.WriteExpressions() [89] InstanceConstructorFrame.WriteExpressions() [88] InstanceConstructorFrame.WriteExpressions() [87] InstanceConstructorFrame.WriteExpressions() [86] InstanceConstructorFrame.WriteExpressions() [85] InstanceConstructorFrame.WriteExpressions() [84] InstanceConstructorFrame.WriteExpressions() [83] InstanceConstructorFrame.WriteExpressions() [82] InstanceConstructorFrame.WriteExpressions() [81] InstanceConstructorFrame.WriteExpressions() [80] InstanceConstructorFrame.WriteExpressions() [79] InstanceConstructorFrame.WriteExpressions() [78] InstanceConstructorFrame.WriteExpressions() [77] InstanceConstructorFrame.WriteExpressions() [76] InstanceConstructorFrame.WriteExpressions() [75] InstanceConstructorFrame.WriteExpressions() [74] InstanceConstructorFrame.WriteExpressions() [73] InstanceConstructorFrame.WriteExpressions() [72] InstanceConstructorFrame.WriteExpressions() [71] InstanceConstructorFrame.WriteExpressions() [70] InstanceConstructorFrame.WriteExpressions() [69] InstanceConstructorFrame.WriteExpressions() [68] InstanceConstructorFrame.WriteExpressions() [67] InstanceConstructorFrame.WriteExpressions() [66] InstanceConstructorFrame.WriteExpressions() [65] InstanceConstructorFrame.WriteExpressions() [64] InstanceConstructorFrame.WriteExpressions() [63] InstanceConstructorFrame.WriteExpressions() [62] InstanceConstructorFrame.WriteExpressions() [61] InstanceConstructorFrame.WriteExpressions() [60] InstanceConstructorFrame.WriteExpressions() [59] InstanceConstructorFrame.WriteExpressions() [58] InstanceConstructorFrame.WriteExpressions() [57] InstanceConstructorFrame.WriteExpressions() [56] ListAssignmentFrame<IBusinessValidatorFor<TermAgreement, TermAgreementContext>>.WriteExpressions() InstanceConstructorFrame.WriteExpressions() [55] InstanceConstructorFrame.WriteExpressions() [54] InstanceConstructorFrame.WriteExpressions() [53] InstanceConstructorFrame.WriteExpressions() [52] InstanceConstructorFrame.WriteExpressions() [51] InstanceConstructorFrame.WriteExpressions() [50] InstanceConstructorFrame.WriteExpressions() [49] InstanceConstructorFrame.WriteExpressions() [48] InstanceConstructorFrame.WriteExpressions() [47] InstanceConstructorFrame.WriteExpressions() [46] InstanceConstructorFrame.WriteExpressions() [45] InstanceConstructorFrame.WriteExpressions() [44] InstanceConstructorFrame.WriteExpressions() [43] InstanceConstructorFrame.WriteExpressions() [42] InstanceConstructorFrame.WriteExpressions() [41] InstanceConstructorFrame.WriteExpressions() [40] InstanceConstructorFrame.WriteExpressions() [39] InstanceConstructorFrame.WriteExpressions() [38] InstanceConstructorFrame.WriteExpressions() [37] InstanceConstructorFrame.WriteExpressions() [36] InstanceConstructorFrame.WriteExpressions() [35] InstanceConstructorFrame.WriteExpressions() [34] InstanceConstructorFrame.WriteExpressions() [33] InstanceConstructorFrame.WriteExpressions() [32] InstanceConstructorFrame.WriteExpressions() [31] InstanceConstructorFrame.WriteExpressions() [30] InstanceConstructorFrame.WriteExpressions() [29] InstanceConstructorFrame.WriteExpressions() [28] InstanceConstructorFrame.WriteExpressions() [27] InstanceConstructorFrame.WriteExpressions() [26] InstanceConstructorFrame.WriteExpressions() [25] InstanceConstructorFrame.WriteExpressions() [24] InstanceConstructorFrame.WriteExpressions() [23] InstanceConstructorFrame.WriteExpressions() [22] InstanceConstructorFrame.WriteExpressions() [21] InstanceConstructorFrame.WriteExpressions() [20] ListAssignmentFrame<IBusinessValidatorFor<UserTermAgreement, UserTermAgreementContext>>.WriteExpressions() InstanceConstructorFrame.WriteExpressions() [19] InstanceConstructorFrame.WriteExpressions() [18] InstanceConstructorFrame.WriteExpressions() [17] InstanceConstructorFrame.WriteExpressions() [16] InstanceConstructorFrame.WriteExpressions() [15] InstanceConstructorFrame.WriteExpressions() [14] InstanceConstructorFrame.WriteExpressions() [13] InstanceConstructorFrame.WriteExpressions() [12] InstanceConstructorFrame.WriteExpressions() [11] InstanceConstructorFrame.WriteExpressions() [10] InstanceConstructorFrame.WriteExpressions() [9] InstanceConstructorFrame.WriteExpressions() [8] InstanceConstructorFrame.WriteExpressions() [7] InstanceConstructorFrame.WriteExpressions() [6] InstanceConstructorFrame.WriteExpressions() [5] InstanceConstructorFrame.WriteExpressions() [4] InstanceConstructorFrame.WriteExpressions() [3] InstanceConstructorFrame.WriteExpressions() [2] InstanceConstructorFrame.WriteExpressions() [1] FuncResolverDefinition.BuildResolver() GeneratedInstance.BuildFuncResolver() GeneratedInstance.buildResolver() GeneratedInstance.ToResolver() ConstructorInstance.ToResolver() ServiceGraph.FindResolver() Scope.GetInstance() at IoCContainer.GetInstance() at DependencyInjectionMvcControllerFactory.GetControllerInstance() DefaultControllerFactory.CreateController() MvcHandler.ProcessRequestInit() MvcHandler.BeginProcessRequest() MvcHandler.BeginProcessRequest() MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest() HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() HttpApplication.<>c__DisplayClass285_0.<ExecuteStepImpl>b__0() HttpApplication.StepInvoker.Invoke() [3] HttpApplication.StepInvoker.<>c__DisplayClass4_0.<Invoke>b__0() [2] TelemetryCorrelationHttpModule.OnExecuteRequestStep() HttpApplication.<>c__DisplayClass284_0.<OnExecuteRequestStep>b__0() [2] HttpApplication.StepInvoker.Invoke() [2] HttpApplication.StepInvoker.<>c__DisplayClass4_0.<Invoke>b__0() [1] ApplicationInsightsHttpModule.OnExecuteRequestStep() at /_/WEB/Src/Web/Web/ApplicationInsightsHttpModule.cs:line 164 HttpApplication.<>c__DisplayClass284_0.<OnExecuteRequestStep>b__0() [1] HttpApplication.StepInvoker.Invoke() [1] HttpApplication.ExecuteStepImpl() HttpApplication.ExecuteStep() HttpApplication.PipelineStepManager.ResumeSteps() HttpApplication.ResumeSteps() HttpApplication.BeginProcessRequestNotification() HttpRuntime.ProcessRequestNotificationPrivate() HttpRuntime.ProcessRequestNotification() PipelineRuntime.ProcessRequestNotificationHelper() [2] PipelineRuntime.ProcessRequestNotification() [2] [Managed to Native Transition] PipelineRuntime.ProcessRequestNotificationHelper() [1] PipelineRuntime.ProcessRequestNotification() [1] [Application Domain Transition]
Look for whatever implements the IBusinessValidatorFor<User, UserMgmtContext>
interface, and count the constructor arguments to get to the position that blew up on the hash code thing.
Have you tried AssertContainerIsValid() on this thing btw? And why would you have a class that has 70 some constructor args? Is this generated code?
Thanks @jeremydmiller for the tips, I've looked into the IBusinessValidatorFor<User, UserMgmtContext> interface but I didn't find any irregular thing. Most of the implementations have parameterless constructors and only two cases that injects a small Data Access component that doesn't have any relationship. The AssertConfigurationIsValid is passing normally (ConfigOnly mode).
"Funny" thing, if I start debugging with Rider, it throws the StackOverflowException right on the first request but if I do the same with VS2019, it only breaks on the controller that references the interface with that big number of dependencies. Answering your question, this specific case is a very complex feature that relies on several other components and data components for validations. It's not in a good shape but it was working fine so far with StructureMap (latest version). However, I'm adding to my backlog to review this monster to avoid future issues.
Another important thing that's happening is Lamar is taking way longer to add all services comparing to StructureMap, it's around 2 minutes and StructureMap usually takes 30 seconds. I have a feeling that Lamar is not working well with legacy ASP.NET MVC based on .NET 4.8 with IISEXPRESS. I'm not able to test in a ASP.NET Core WebApp due some dependencies on .NET 4.8 that we are still working on.
@jeremydmiller I've downloaded and referenced the Lamar projects to my solution to check whether I could debug it with more freedom. Now I'm getting the StackOverflowException in another place. When Lamar is trying to instantiate the dependencies, it throwing inside of a FluentValidation validator class (sample below - at line: MessengerComponentResource.errorAttachmentNameEmpty) where it gets a string from a Resource. If I replace the Resource by a literal string, it passes. Any guess about what could be the reason? It seems to be related to the issue you mentioned about the IBusinessValidatorFor<User, UserMgmtContext>
exception, it's not clear why it does that.
Sample
public SaveIsAttachmentNameEmptyValidator
()
: base (ExecOrderConstants.EXEC_ORDER_002)
{
// Add the attachment name validation.
base.RuleSet
(
IS_ATTACH_NAME_EMPTY,
() => base.RuleFor(attach => attach.AttachmentName)
.NotEmpty()
.WithMessage(MessengerComponentResource.errorAttachmentNameEmpty)
);
// Save the mappings between contexts, and their names.
base.functionContextAndRuleNamesDictionary.Add (MessageAttachmentMgmtContext.CreateNewMessageAttachment, IS_ATTACH_NAME_EMPTY);
// Set the descripter;
base.ActivityDescripterForLogging = ACTIVTY_DESCRIPTER;
}
Sorry, now you're going to have to go to the FluentValidation folks. I don't know why that would cause an SOE though.
@jeremydmiller - the problem is not there. I was debugging so far the Lamar source code to try to check if it's going into an endless loop. At this moment, I've identified what's happening and where it's breaking, there is no directly relation with Resource or FluentValidation.
Here is the case:
if (Next is IResolverFrame next)
`
public void WriteExpressions(LambdaDefinition definition)
{
var isDisposed = BuiltType.CanBeCastTo
var callCtor = Expression.New(Ctor, Parameters.Select(definition.ExpressionFor));
if (Next == null && !isDisposed && !Setters.Any())
{
definition.Body.Add(callCtor);
}
else
{
var variableExpr = Expression.Parameter(BuiltType, Variable.Usage);
definition.RegisterExpression(Variable, variableExpr);
definition.Assign(variableExpr, callCtor);
foreach (var setter in Setters)
{
var setMethod = BuiltType.GetProperty(setter.PropertyName).SetMethod;
var value = definition.ExpressionFor(setter.Variable);
var call = Expression.Call(variableExpr, setMethod, value);
definition.Body.Add(call);
}
if (isDisposed)
{
definition.RegisterDisposable(variableExpr, Variable.VariableType);
}
if (Next == null)
{
definition.Body.Add(definition.ExpressionFor(Variable));
}
else
{
**if (Next is IResolverFrame next)
{
next.WriteExpressions(definition);
}**
else
{
throw new InvalidCastException($"{Next.GetType().GetFullName()} does not implement {nameof(IResolverFrame)}");
}
}
}
`
I'm still debugging to try to understand the whole process.
Just an update from my debugging sessions. I've found out that one Mvc Controller instance creation is generating 1878 "frames" of dependencies/variables. I've looked into our code and it doesn't seem to have this number of indirect dependencies to create this controller. I couldn't find yet if this should happen or the library is finding more dependencies than it should.
I'm having the exact same issue. The call stack looks almost the same, Rider crashes only when running with the debugger, in release mode it actually works. On the other hand Visual Studio seems to be working fine even when debugging. Is there a fix around this?
@sszakal Do you have any way of creating reproduction steps?
@jeremydmiller I can reproduce it all the time on the solution that I'm working on, unfortunately I can't share the source code. I will try to debug myself, or reproduce it on a new .net project/solution.
Seems this can be fixed by rewriting InstanceConstructorFrame.WriteExpressions
w/o recursive calls
If you are getting the SOE, please make that "Disable JIT optimizations on module load" option is turned off (Rider 2021.2)
If you use VS check that "Suppress JIT optimizations on module load" is turned off
The reason for the SOE is that if debugger forces JIT not to apply optimizations JIT is not allowed to get rid of this recursion. With optimizations JIT will use a loop instead of recursion calls. To verify this, add a breakpoint like in the screenshot. You will notice, that you'll stay at the same frame with JIT optimizations enabled. Otherwise, you'll see a recursion:
repro: LamarTest.zip
No recent activity, and I don't see anything actionable here.
I'm also hitting this.
@eterekhin sums it up and provides a solution.
I’m working on a migration from .NET Framework 4.8 to .NET 5 (and .NET standard 2.0 when applicable), we were using StructureMap and now we moved to Lamar. Now I’m facing a strange issue that’s throwing StackOverflowException in an ASP.NET MVC running under .Net 4.8. If I try to get an instance of an interface that has around 70 dependencies, it throws the exception, I’ve found which dependency was causing the issue and when I remove this specific dependency, the get instance works. However, if I try to get only the problematic dependency, the instance is retrieved. It does not make sense.
The same interface is normally retrieved with StructureMap. I’m not able to get any deep details or where exactly it’s the root cause once when I get the WhatIHave result, it does not show any inconsistency.
Any ideia on how I could troubleshoot it?
I really appreciate any guidance that can be given.