Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Strange System.StackOverflowException error in C#, Asp.Net web app

This is the weirdest error I have seen and I don't know what the cause is. In VS2013 I have an aspx page using datatables.net and a repeater. The page loads up fine and displays correctly then after a few seconds I get

"An unhandled exception of type 'System.StackOverflowException' occurred in System.Web.dll"

The strange thing is if I do "TOP 76" in my SQL I don't get that error however if I do "TOP 77" or greater and I get that error.

I have done numerous restarts, deleted and recreated the page with different names. Tried removing the datatables.net. I tried replacing single quotes (thinking that might be messing with my mark up). But nothing seems to work.

It's weird because I have the same type/style/code on other pages with more and less data and they all work fine.

Next step is reinstall VS2013 as I can't think of anything else to try. Any help would be much appreciated as I am flummoxed.

  • Click here for the data (csv)

  • StackTrace

This shows 5,000 entries before visual studio gives up

System.Runtime.Serialization.dll!System.Runtime.Serialization.TypeHandleRefEqualityComparer.GetHashCode(System.Runtime.Serialization.TypeHandleRef obj)
    mscorlib.dll!System.Collections.Generic.Dictionary<System.Runtime.Serialization.TypeHandleRef,System.Runtime.Serialization.IntRef>.FindEntry(System.Runtime.Serialization.TypeHandleRef key)
    mscorlib.dll!System.Collections.Generic.Dictionary<System.Runtime.Serialization.TypeHandleRef,System.Runtime.Serialization.IntRef>.TryGetValue(System.Runtime.Serialization.TypeHandleRef key, out System.Runtime.Serialization.IntRef value)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.JsonDataContractCriticalHelper.GetId(System.RuntimeTypeHandle typeHandle)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.JsonDataContractCriticalHelper.GetJsonDataContract(System.Runtime.Serialization.DataContract traditionalDataContract)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool verifyKnownType, System.RuntimeTypeHandle declaredTypeHandle, System.Type declaredType)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiType(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle objectTypeHandle, System.Type objectType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle, System.Type declaredType)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle)
    [Lightweight Function]
    /* lots of lines omitted */
    System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonCollectionDataContract.WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle)
    [Lightweight Function]
    System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonCollectionDataContract.WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
    System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
    The maximum number of stack frames supported by Visual Studio has been exceeded.

Here is the aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/OxintMaster.master" AutoEventWireup="true" CodeBehind="inactivereport.aspx.cs" Inherits="oxint.com._40.admin.contrib.inactivereport" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div class="grid">
        <div class="row cells12">
            <div class="cell colspan12">
                <h3>Companies assigned to Inactive Contributors Report (<asp:Literal runat="server" ID="litCount" ></asp:Literal>)</h3>
            </div>
        </div>
        <table id="mysearchresultstable" class="dataTable striped" data-page-length='25'>
            <thead>
                <tr>
                    <th>Contributor</th>
                    <th style="text-align:center;">Count</th>
                    <th style="text-align:center;">Action</th>
                </tr>
            </thead>
            <tbody>
                <%try
                  {%>
                <asp:Repeater runat="server" ID="rptData1">
                    <ItemTemplate>
                        <tr>
                            <td style="white-space:nowrap;">
                                <a href='/admin/contrib/cndisplay.aspx?id=<%#Eval("Items[0].Value")%>'>
                                    <asp:Literal runat="server" ID="litName"></asp:Literal>
                                </a>
                            </td>
                            <td style="white-space:nowrap;text-align:center;"><%#Eval("Items[3].Value")%></td><!--count-->
                            <td style="white-space:nowrap;text-align:center;">
                                <a href='/admin/contrib/inactiveview.aspx?id=<%#Eval("Items[0].Value")%>'><span class="mif-info"></span>
                            </td>
                        </tr>
                    </ItemTemplate>
                </asp:Repeater>
                <%}
                  catch (Exception ex) { Response.Write(ex.Message); } %>
            </tbody> 
        </table>             
    </div>

<script>
    $(document).ready(function () {
        /*$.fn.dataTable.moment('dd MMM yyyy HH:mm');*/
        $('#mysearchresultstable').dataTable(
        {
            /*"order": [[1, "asc"]],*/
            /*responsive: true,*/
            "lengthMenu": [25, 50, 100],
            "pagingType": "full",
            "oLanguage": { "sSearch": "Filter:" },
            "aoColumns": [null, null, { "bSortable": false }]
        }
    );
});
</script>

</asp:Content>

Here is the code behind

using ApplicationClasses;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace oxint.com._40.admin.contrib
{
    public partial class inactivereport : System.Web.UI.Page
    {
        private int iCount { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                rptData1.ItemDataBound += rptData1_ItemDataBound;

                string sData = "SELECT contributor.referenceno,contributor.firstname,contributor.lastname,COUNT(contributor.referenceno) As Count " +
                              "FROM ((Contribprofile inner join contributor on Contribprofile.referenceno=contributor.referenceno) " +
                              "inner join Profilecompany on Contribprofile.companyid=Profilecompany.companyid) " +
                              "where Contribprofile.iscurrent =1 and not contributor.status in ('Full','Trial') " +
                              "group by contributor.Referenceno,contributor.firstname,contributor.lastname ";

                rptData1.DataSource = new DataAccessFunctions.DataAccess().GetData(sData, null);
                rptData1.DataBind();
            }
        }

        void rptData1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            GenericData oData = (GenericData)e.Item.DataItem;

            iCount += ApplicationSystemFunctions.SystemFunctions.ParseInt(oData.Items[3].Value);

            litCount.Text = iCount.ToString();

            Literal oLiteral = (Literal)e.Item.FindControl("litName");

            oLiteral.Text = string.Format("{0} {1}", oData.Items[1].Value, oData.Items[2].Value.Replace("'", "-"));
        }
    }
}
like image 942
djack109 Avatar asked Apr 22 '16 13:04

djack109


People also ask

What is System StackOverflowException?

StackOverflowException is thrown for execution stack overflow errors, typically in case of a very deep or unbounded recursion. So make sure your code doesn't have an infinite loop or infinite recursion. StackOverflowException uses the HRESULT COR_E_STACKOVERFLOW, which has the value 0x800703E9.

What causes a stack overflow exception?

A StackOverflowException is thrown when the execution stack overflows because it contains too many nested method calls. using System; namespace temp { class Program { static void Main(string[] args) { Main(args); // Oops, this recursion won't stop. } } }


1 Answers

I had this exact problem and I finally traced it down to the aspx code which laid out the template for my DataList. I had a typo in the row html tag tr" where a quote was left over from deleting previous style information. Once I removed the quote, the error went away.

like image 123
user3494684 Avatar answered Sep 17 '22 12:09

user3494684