EventType clr20r3 - fatalerror - .NET Runtime версия 2.0.50727.3053 - неисправимая системная ошибка - PullRequest
1 голос
/ 04 августа 2011

После запуска приложения WPF (.NET 3.5) на компьютере с Windows XP в течение более 12 часов происходит сбой приложения с двумя сообщениями об ошибках EventLog.

Первый - .NET Runtime версия 2.0.50727.3053 - неисправимая системная ошибка.

и второй EventType clr20r3, P1 knxclientconsole.exe, P2 1.0.0.0, P3 4e3961fd, P4 windowsbase, P5 3.0.0.0, P6 488f1338, P7 da, P8 1b, P9 fatalerror, P10 NIL.

Мое приложение WPF - это пользовательский интерфейс для внешнего модуля DLL, который я тоже собрал. Этот внешний модуль является коммуникационным модулем, который связывается через сеть LAN использование UDP-сокетов с внешним устройством.

После использования ILDASM для поиска места, где сгенерирована ошибка, я нашел в своем коде строку, где ошибка генерируется, но недостаточно близко.

    public bool ON_Seg4
    {
        get
        {
            return _ON_Seg4;
        }
        set
        {
            if (_ON_Seg4 != value)
            {
                _ON_Seg4 = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("ON_Seg4"));
                }
            }
        }
    }

Исключение возникает в строке PropertyChanged (this, new PropertyChangedEventArgs ("ON_Seg4"));

Вы можете видеть, что исключение возникает в установщике свойства ON_Seg4.

Используя ILDASM с использованием параметра P8 (смещение IL), я обнаружил, что исключение возникает из смещения 1b:

// 000151: if (PropertyChanged! = Null) IL_0016: / * 02 | * / ldarg.0

IL_0017: / * 7B | (04) 00007C * / ldfld класс [System / 23000002 /]System.ComponentModel.PropertyChangedEventHandler/01000013/ KNXClientConsole.Controls.Displays.SevenSegment / 02000010 / :: PropertyChanged / * 0400007C * / *

IL_001c: / * 14 | * / ldnull

IL_001d: / * FE01 | * / ceq

IL_001f: / * 0A | * / stloc.0

IL_0020: / * 06 | * / ldloc.0

IL_0021: / * 2D | 19 * / brtrue.s IL_003c

Если вы посмотрите эту строку, вы увидите, что детального кода нет со смещением 1b. Смещение 1b - это последний байт обработчика PropertyChanged. Я не могу найти смещение 1b. Где это или лучше в чем причина проблемы?

IL_0017: / * 7B | (04) 00007C * / ldfld класс [System / 23000002 /]System.ComponentModel.PropertyChangedEventHandler/01000013/ KNXClientConsole.Controls.Displays.SevenSegment / 02000010 / :: PropertyChanged / * 0400007C * / *

Ошибка: fatalerror , поэтому у меня нет достаточного объяснения этому.

Забавная часть истории состоит в том, что у меня есть 7 похожих свойств (ON_Seg0 ... ON_Seg6) с тем же кодом, и исключение никогда не происходит там только в ON_Seg4.

Эти свойства я использую для имитации состояния ВКЛ / ВЫКЛ 7-сегментного индикатора. Эти свойства привязаны к графическому объекту XAML.

XAML часть:

Это полная история, поэтому, если у кого-то есть какое-то решение или подсказка, пожалуйста, помогите мне.

...