Я пытался узнать больше об этой проблеме, и мне не повезло. Я продолжаю читать, что приложения не должны иметь эту ошибку, и хотя все это прекрасно и денди, это не говорит мне, что может вызвать эту ошибку.
Я знаю, что этот вопрос очень широк, поскольку я уверен, что может быть несколько причин для этой ошибки, поэтому я попытаюсь немного сузить его.
Я работаю в VS2003, разрабатывая приложение, использующее С++. NET
Приложение использует в основном неуправляемый код и мало управляемый код (из-за сильных помех сборщиком мусора). Поэтому я бы оценил его на 95% неуправляемых, 5% удалось
Я где-то читал, что неустойчивый/багги/неправильный неуправляемый код может испортить части памяти CLR, которые он повреждает и бросает эту ошибку.
Поскольку 95% приложений неуправляемы, я не уверен, с чего начать искать. Может быть, несколько классов, которые взаимодействуют между управляемыми и неуправляемыми? Как насчет сортировки данных из управляемых до неуправляемых? Может ли неправильный нулевой указатель вызвать этот сбой? Какие другие проблемы могут вызвать это? Индекс массива за пределами границ? Как насчет нулевого объекта?
Любая информация/статья/статья, которые могут дать хороший список возможных причин сбоя System.ExecutionEngine, будут оценены!
На основе ответов это исключение может быть вызвано в нескольких сценариях, упоминая htem в ответе для лучшей видимости.
Список возможных причин/сценариев -
- Несоответствие аргументов между С++ и С#
- При использовании отражения
- Служба WCF пытается вернуть IList или IEnumerable здесь здесь
- Использование инструментов профилирования
- используя инструкцию std в ассемблере
- вызов:: FreeLibrary() несколько раз
- Плагины .NET Clipboard
- с использованием Unity Framework
- Использование неправильного маршалинга
- Использование
INotifyPropertyChanged
Возможные обходные пути/решения -