0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 15
|
||||||
1 | ||||||
.NET 4.x Возникает исключение, минуя try-catch10.04.2012, 12:28. Показов 2182. Ответов 8
Метки нет (Все метки)
Всем добрый день.
Имею следующую проблему. Написана серверная часть программы, которая из определенной очереди забирает в однопоточном режиме запросы и выполняет их в отдельных потоках. Все работает вроде бы круто, пока не стали проводить нагрузочное тестирование. И тут появились некоторые подводные камни, точнее один основной большой камень. При нагрузке сервера через некоторое время(каждый раз примерно разное) появляется окошко, что произошла ошибка в приложении и предложение завершить приложение и отладить. В инфо ничего вразумительного не написано, но когда закрываешь это окошко, в консоль пишется исключение: Исключение
Необработанное исключение:Необработанное исключение: System.Reflection.TargetIn
vocationException: Адресат вызова создал исключение. ---> System.AccessViolation Exception: Попытка чтения или записи в защищенную память. Это часто свидетельств ует о том, что другая память повреждена. в CryptoPro.Sharpei.NetDetours.NativeDetourEntryPoint.OnAssemblyLoadEvent(Ass embly loadedAssembly) в System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnl y, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boo lean& bNeedSecurityCheck) в System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheck This, Boolean fillCache) в System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean sk ipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) в System.Activator.CreateInstance(Type type, Boolean nonPublic) в System.Xml.Serialization.TempAssembly.get_Contract() в System.Xml.Serialization.TempAssembly.InvokeReader(XmlMapping mapping, XmlR eader xmlReader, XmlDeserializationEvents events, String encodingStyle) в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, Str ing encodingStyle, XmlDeserializationEvents events) в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) в ********************(********) в **********************.cs:строка 377 в ********************(********) в **********************.cs:строка 134 --- Конец трассировки внутреннего стека исключений --- в System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Obj ect target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAtt ributes, RuntimeType typeOwner) в System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Obje ct target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner) в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeA ttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibi lityChecks) в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeA ttr, Binder binder, Object[] parameters, CultureInfo culture) в System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) в ********************(********) в **********************.cs:строка 83 в ********************(********) в **********************.cs:строка 100 в ********************(********) в **********************.c s:строка 79 в System.Threading.ThreadHelper.ThreadStart_Context(Object state) в System.Threading.ExecutionContext.runTryCode(Object userData) в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCle anup(TryCode code, CleanupCode backoutCode, Object userData) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionCon text, ContextCallback callback, Object state) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, Co ntextCallback callback, Object state, Boolean ignoreSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, Co ntextCallback callback, Object state) в System.Threading.ThreadHelper.ThreadStart(Object obj) Звездочками пометил свои пользовательские методы и имена файлов. Казалось бы все тривиально и в исключении все написано. Но весь смак в том, что весь код обложен try-ями вида:
Всем заранее спасибо за помощь.
0
|
10.04.2012, 12:28 | |
Ответы с готовыми решениями:
8
Не обрабатывается исключение try-catch Не могу вывести исключение с try и catch Почему оператор catch не обрабатывает исключение? Возникает исключение при десериализации |
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
10.04.2012, 13:57 | 2 |
Хотелось бы глянуть на этот участок кода, вместе с блоками try и catch.
0
|
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 15
|
||||||
10.04.2012, 15:49 [ТС] | 3 | |||||
0
|
1319 / 992 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
|
10.04.2012, 16:02 | 4 |
С такими проблемами надо не сюда, а к разработчикам этого "КриптоПро" обращаться. А код рабочий, чо.
0
|
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 15
|
|
10.04.2012, 16:30 [ТС] | 5 |
Често на своей практике с таким первый раз столкнулся и даже не представляю, откуда начать копать решение проблемы.
0
|
1319 / 992 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
||||||
10.04.2012, 17:29 | 6 | |||||
таких "ошибок" много...
сборки загружаются в динамике и в обход пользовательского кода для примера можно сделать. решение, в нем 2 проекта. один ссылается на другой. в исполняемом:
компилируем и стираем DLL файл, который рядом с исполняемым лежит так вот, "Начало" будет, но "Поймано" - нет сорь, спешу
1
|
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 15
|
|
10.04.2012, 20:52 [ТС] | 7 |
Mikant, спасибо большое за разъяснение. Попробовал Ваш код и действительно исключение пользовательским кодом не было перехвачено. Скорее всего в этом "КриптоПро" какая-то подобная ошибка и скрыта. Буду писать им в саппорт.
Благодарю за помощь.
0
|
21 / 21 / 6
Регистрация: 07.01.2010
Сообщений: 376
|
|
07.02.2014, 08:28 | 8 |
Кстати то, наверное, XmlSerializer косячил. У меня постоянно подобное с ним, стоит только подсунуть неподходящий файл. Кто нибудь знает как избежать этого, каким образом можно обработать такое исключение, как вообще избежать падения?
0
|
44 / 44 / 19
Регистрация: 20.01.2014
Сообщений: 87
|
||||||
07.02.2014, 09:12 | 9 | |||||
Сообщение было отмечено как решение
Решение
Применить атрибут [HandleProcessCorruptedStateExceptions] к методу в котором пробовать словить исключение (System.Exception) от метода который приводит к падению приложения.
Например:
3
|
07.02.2014, 09:12 | |
07.02.2014, 09:12 | |
Помогаю со студенческими работами здесь
9
Почему не возникает исключение OverflowException? В коде используется Try catch, но все равно выбрасывается необработанное исключение Возникает исключение при записи в txt файл (Процесс не может получить доступ к файлу) Исключение try catch Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |