agsXMPP - не могу поймать исключение
От: pumpurumer  
Дата: 28.06.18 08:51
Оценка:
есть приложение, sta, .net-4.0, winforms
в нем используется jabber клиент agsXMPP
подписки на AppDomain.CurrentDomain.UnhandledException и Application.ThreadException есть.
иногда, при проблемах со сетью из недр agsXMPP падает исключение, которое не где не отлавливается и не попадает в логи.
приложение падает, в журнале событий появляется эксепшен.

Приложение: ....
Версия платформы: v4.0.30319
Описание. Процесс был завершен из-за необработанного исключения.
Сведения об исключении: System.NullReferenceException


в agsXMPP.Xml.StreamParser.Push(Byte[], Int32, Int32)
   в agsXMPP.XmppConnection.SocketOnReceive(System.Object, Byte[], Int32)
   в agsXMPP.net.BaseSocket.FireOnReceive(Byte[], Int32)
   в agsXMPP.net.ClientSocket.EndReceive(System.IAsyncResult)
   в System.Net.LazyAsyncResult.Complete(IntPtr)
   в System.Net.ContextAwareResult.CompleteCallback(System.Object)
   в System.Threading.ExecutionContext.runTryCode(System.Object)
   в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
   в System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   в System.Net.ContextAwareResult.Complete(IntPtr)
   в System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)
   в System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
   в System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)


я не понимаю, как я должен поймать это исключение. почему все приложение у меня падает?
может подскажите — куда копать.
у меня только две идеи:
1. копать внутрь agsXMPP и что-то там фиксить
2. работу с agsXMPP вывести в отдельный процесс.

как-так, я не могу управлять всеми исключениями в управляемом приложении.
может подскажите — куда копать? т.е. принципиально, нужно чтобы приложение не падало все.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.