Помогите с system.stackoverflowexception - PullRequest
0 голосов
/ 02 декабря 2009

Внезапно мое приложение передает это в просмотрщике событий приложения:

EventType clr20r3, P1 w3wp.exe, P2 6.0.3790.3959, P3 45d6968e, P4 app_code.ahowircm, P5 0.0.0.0, P6 4b167253, P7 30, P8 0, P9 system.stackoverflowException, P10 NIL.

Ничего не изменилось со вчерашнего дня, и раньше все работало нормально. На сервере работает несколько веб-сервисов .net 2.0 поверх Windows Server 2003. !!!!!

Edit:

Также я запускаю это на двух серверах, 2008R2 и 2003, точно такой же код, на 2008R2 он работает нормально, но в 2003 он останавливает пул приложений.

Ответы [ 5 ]

6 голосов
/ 02 декабря 2009

Не совсем ответ, больше "связанной интересной информации" в этих записях журнала событий CL20r3.

CLR20r3 объяснение

P1 Имя приложения

P2 Версия приложения

P3Временная метка приложения

P4 Сборка / Название модуля

P5 Сборка / Модульная версия

P6 Сборка / метка времени модуля

P7 MethodDef

P8 IL смещение

P9 Исключение

Вы можете использовать ILDASM на P1, найти MethodDef 060000xx (где xx - P7), чтобы получить метод throwing.

Затем используйте рефлектор, чтобы увидеть код, просмотреть его в режиме IL и найти строку IL в P8.

Часто он указывает вам прямо на строку, которая вызвала исключение.

4 голосов
/ 02 декабря 2009

Это обычно указывает на беглый рекурсивный вызов (намеренно или нет). Трудно сказать, не видя некоторый код.

3 голосов
/ 02 декабря 2009

Ваш код, возможно, не изменился, но есть вероятность, что ваши данные изменились. Посмотрите, не добавит ли недавно добавленные данные странные условия.

1 голос
/ 02 декабря 2009

Вам действительно нужна полная трассировка стека, чтобы понять, что происходит. Вы регистрируете свои исключения где-нибудь? Если нет, вы можете быстро подключить обработчик событий .

0 голосов
/ 05 февраля 2012

Эта проблема связана с проблемой разбора петлевого отверстия. Как у меня есть хороший пример для вас, так что вы можете легко понять:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AddFunction;

namespace sharat
{
public class Program
{
public class A
{
  public  A()
    {
        object obj = new B();
    }
}
public  class B
{
   public  B()
    {
        object obj = new A();
    }

 }



    public  static void Main(string[] args)

    {
      //  long i = 10;
      //  Console.Write(i.ToString());
      //  object obj = i;
      //  Console.WriteLine(obj.ToString());
      //  i++;

      //Console.WriteLine(i.ToString());
      //i++;
      ////obj = i;
      //Console.WriteLine(obj.ToString());
      //Console.WriteLine(i.ToString());
      //Console.WriteLine(obj.ToString());
      long a = 9;
      long b = 130;

      long d = Add.add(a,b);
        Console.WriteLine(d);
        Console.ReadLine();
        object test = new B();
        Console.WriteLine(d);
     }
    }
   }
...