CodeSmith Community
Your Code. Your Way. Faster!

Stack overflow exception (no deep load/save)

Latest post 10-30-2007 6:37 AM by Ottomeister. 0 replies.
  • 10-30-2007 6:37 AM

    Stack overflow exception (no deep load/save)

    So I get this strange stack overflow exception which is really driving me nuts... I noticed a few related bugs (e.g. http://community.codesmithtools.com/forums/p/6006/23350.aspx#23350) but it doesn't seem like the same problem.

    The Problem:

    When loading a list of Accessory Entities I get a stack overflow exception, but only when related data is loaded.

    The code:

    private void DisplayAccessoryOptions(MarketAccessoriesGroup datasource)
    {
       //The call below causes a stack overflow only if ProcessSelection(...) has been called first.
       TList<Accessory> accessories = DataRepository.AccessoryProvider.GetByMarketAccessoriesGroupIdMarketId(datasource.Id, datasource.MarketId);
    }

    private List<MarketProduct> ProcessSelection(SelectionContext orderSpecification)
    {
     List<MarketProduct> result = new List<MarketProduct>(orderSpecification.SelectedAccessories.Values.Count);
     foreach (Accessory selectedAccessory in orderSpecification.SelectedAccessories.Values)
     {
                MarketProduct resultItem = selectedAccessory.EanMarketIdSource;
                if (resultItem == null)
                {
                    resultItem = DataRepository.MarketProductProvider.GetByEanMarketId(selectedAccessory.Ean, selectedAccessory.MarketId);
                    //If the line below is omitted, no stack overflow occurs.
                    selectedAccessory.EanMarketIdSource = resultItem;
                }
                resultItem.Accessory = selectedAccessory; 
         result.Add(resultItem); 
     }
     return result;
    }

    The callstack:

    > MyNamespace.Entities.DLL!MyNamespace.Entities.EntityHelper.GetBindableProperties(System.Type type = {Name = Cannot evaluate expression because the current thread is in a stack overflow state. FullName = Cannot evaluate expression because the current thread is in a stack overflow state.}) Line 391 + 0x9 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.ListBase<MyNamespace.Entities.Market>.InitializeList() Line 62 + 0x3c bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.ListBase<MyNamespace.Entities.Market>.ListBase() Line 53 + 0x8 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.TList<MyNamespace.Entities.Market>.TList() Line 25 + 0x8 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.TList<MyNamespace.Entities.Market>.Copy() Line 121 + 0x3f bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.TList<MyNamespace.Entities.Market>.Clone() Line 112 + 0xa bytes C#

      MyNamespace.Entities.DLL!MyNamespace.Entities.MarketProductBase.MakeCopyOf(object x = Count = Cannot evaluate expression because the current thread is in a stack overflow state.) Line 820 + 0x14 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.MarketProductBase.Copy() Line 785 + 0x16 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.MarketProductBase.Clone() Line 806 + 0xa bytes C#

      MyNamespace.Entities.DLL!MyNamespace.Entities.AccessoryBase.MakeCopyOf(object x = {MyNamespace.Entities.MarketProduct}) Line 537 + 0x14 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.AccessoryBase.Copy() Line 509 + 0x17 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.AccessoryBase.Clone() Line 523 + 0xa bytes C#

     [Loop Begin]
      MyNamespace.Entities.DLL!MyNamespace.Entities.MarketProductBase.MakeCopyOf(object x = {MyNamespace.Entities.Accessory}) Line 820 + 0x14 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.MarketProductBase.Copy() Line 789 + 0x16 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.MarketProductBase.Clone() Line 806 + 0xa bytes C#

      MyNamespace.Entities.DLL!MyNamespace.Entities.AccessoryBase.MakeCopyOf(object x = {MyNamespace.Entities.MarketProduct}) Line 537 + 0x14 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.AccessoryBase.Copy() Line 509 + 0x17 bytes C#
      MyNamespace.Entities.DLL!MyNamespace.Entities.AccessoryBase.Clone() Line 523 + 0xa bytes C#
     [Loop End]
     [Lather, rinse, repeat...]

    The database model:

    Database model

    • Post Points: 5
Page 1 of 1 (1 items) | RSS
Copyright © 2008 CodeSmith Tools, LLC
Powered by Community Server (Commercial Edition), by Telligent Systems