2010-05-21 2 views
0

У нас есть сервер сокетов C# (3.5 framework), который является консольным приложением, после примерно 3000 подключений (или, что менее, довольно случайным) мы получаем необработанное исключение, полностью разрушающее приложение.Сбой сервера Socket с необработанным исключением

Мы действительно пытаемся выяснить, что происходит и где, единственная информация, которую мы получаем ниже, может ли кто-нибудь пролить свет? Следует отметить, что все завернутые в попытке поймать {}

Описание: Остановился работает

Сигнатура проблемы: Имя события проблемы: CLR20r3 Проблема Подпись 01: qrushrserver.exe Проблема Signature 02: 1.0 .0.0 Проблема Подпись 03: 4bf56a0c Проблема Signature 04: система Проблема Signature 05: 2.0.0.0 Проблема Подпись 06: 49cc5ec9 Проблема Подпись 07: 2c0b Проблема Signature 08: 40 Проблема Signature 09: System.Net.Sockets.Socket OS Версия: 6.0.6002.2.2.0.1296.17 Locale ID: 2057

Faulting приложения app_name.exe, версия 1.0.0.0, штамп времени 0x4bf56a0c, вызвавший отказ модуля mscorwks.dll, версия 2.0 .50727.4200, отметка времени 0x4a9ee32d, код исключения 0xc0000005, смещение ошибки 0x00000000001c89ca, идентификатор процесса 0x% 9, время начала приложения 0x% 10.

.NET время выполнения версия 2.0.50727.4200 - Fatal Error Execution Engine (000007FEF8E4664E) (80131506)

+0

Ничего себе, это похоже на серьезный крах :-) Вы пробовали http://www.google.com/search?hl=ru&safe=active&q=.NET+Runtime+version+2.0.50727.4200+-+Fatal+ Execution + Engine + Error + 80131506 & aq = f & aqi = & aql = & oq = & gs_rfai = –

+0

Какой сотовый API вы используете (синхронный, Begin/End, Async)? –

ответ

1

Ваша программа умирает на нарушение прав доступа. Хотя нет убедительных доказательств, это, скорее всего, произошло, когда работала сборщик мусора или поток финализатора. Это исключало бы исключение.

Это почти всегда происходит из-за кучи. Это очень маловероятно, что это код .NET Socket, который вызвал повреждение, этот код был выставлен на тестирование миллиардами раз. Хотя вы даете ему хорошую работу. Гораздо более вероятная причина - это какой-то неуправляемый код, который используется вашей программой. Какой-то COM-сервер, возможно, вы P/вызывают что-то. Он также может быть своего рода надстройкой для машины, например, антивирусным сканером.

Поиск истинной причины будет сложным. Начните с экологического материала, загрузите Windows в безопасном режиме с поддержкой сети. Запустите служебную программу AutoRuns SysInternals, чтобы отключить файлы, которые запускаются автоматически. Удачи вам, вам это нужно.

+0

Мы не P/вызывают что-либо, и мы используем чистые классы .NET. Для mscorwks.dll есть исправление .net, которое мы собираемся установить. Раздражающе, нам нужно удалить все фреймворки, а затем повторно применить их. Спасибо, что ответили, это похоже на правильный кошмар! – Rob

+0

Это не то, что я рекомендовал, перечитал мой последний абзац. Начните с антивирусного сканера, они, как известно, подключаются к сокетам для «защиты» компьютера. Особенно сильная история у Symantec и Panda. –

+0

Какое горячее решение для Роба? –

0

Я предполагаю, что вы используете методы Async, а не Begin/End.

Вы звоните Dispose() на свой SocketAsyncEventArgs, когда закончите с ними? Я нахожу, что если вы этого не сделаете и продолжаете выделять новые, то по какой-то причине вы жуете память, они, похоже, не собираются ... Я обнаружил, что это настоящая проблема с большим количеством операций чтения/записи на высоком количество соединений.

+0

Мы используем пул соединений, поэтому вызов Dispose() для них не подходит для нас, мы просто закрываем сокет, а затем возвращаем его обратно в стек. Или мы тоже должны его утилизировать? – Rob

+0

Ваши данные SocketAsyncEventArgs являются «за операцию» ... Что вы делаете с ними после завершения чтения или записи? Я обнаружил, что избавление от них и создание новых для каждой операции было более эффективным для большого количества соединений, чем объединение для повторного использования и итоговое утверждение для блокировки пула. –

+0

Лен, не могли бы вы получить быстрых мясников по тому, что мы делаем до сих пор. Off темы в этой теме я знаю, но по какой-то причине я могу предпринять пару попыток успешно войти в систему, и я не могу найти проблему. http://95.131.67.163/code.txt МНОГО! – Rob

Смежные вопросы