Может ли система.Исключение AccessViolationException произойти из-за неисправной оперативной памяти?

StackOverflow https://stackoverflow.com/questions/1444844

Вопрос

У меня есть веб-сайт, над которым я работаю уже около года.Недавно он начал вызывать System.AccessViolationException время от времени, на моей машине разработчика, в основном, когда я был вдали от машины...

Я ничего не менял в коде сервера в течение нескольких недель, так как я работал на 100% над частью Javascript, и эта ошибка начала появляться недавно.

Кроме того, код, который я делаю, управляется на 100%.Я не выполняю никакого взаимодействия, не вызываю странные библиотеки DLL, ничего.Это чистый файл VB.Net, поэтому я не понимаю, как я мог бы создать один из них сам...

Так вот, я пользуюсь этой новой машиной уже пару месяцев, и она работает не на 100% правильно.Например, каждые 2-3 дня я получаю синий экран.У меня не было времени провести правильную диагностику, но я подозреваю, что у меня, возможно, неисправен чип оперативной памяти.

Возможно ли, что неисправная оперативная память может привести к исключению AccessViolationException?
Или у меня есть реальная проблема, которой я должен заняться?(помимо моей оперативной памяти)


Обновить:

На самом деле я не могу найти, ГДЕ возникает ошибка.
Я получаю диалоговое окно "необработанное исключение, вы хотите выполнить отладку?" , и когда я подключаю отладчик, у меня появляется список потоков, где у меня есть все ASP.Net потоки, и 3 я создаю сам.
Для этих 3-х у меня есть стек вызовов, и все они останавливаются при вызове Sleep() (что вполне ожидаемо).
Для всех остальных потоков, включая тот, на который VS указывает как на проблемный, у меня нет стека вызовов.У меня также нет никаких подробностей об этом исключении вообще.

Так что я не знаю, происходит ли это каждый раз в одном и том же месте или нет.

Что касается memtest, да, я собираюсь сделать что-то подобное, я просто надеюсь, что у меня будет немного времени, чтобы сделать это в ближайшее время, но пока я хотел знать, может ли это объяснить эту проблему.


ОБНОВЛЕНИЕ 2:

Нашел это в журнале событий...

Произошло необработанное исключение, и процесс был завершен.

Application ID: DefaultDomain    
Process ID: 6632    
Exception: System.AccessViolationException

Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

StackTrace:    at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)

Есть какие-нибудь идеи, что с этим делать?
Спасибо
Дэниел

Это было полезно?

Решение

Возможно ли, что неисправная оперативная память может привести к исключению AccessViolationException?

Да, это возможно.Если базовая память процесса ведет себя непредсказуемо, то да, это может привести ко многим различным типам сбоев приложений, включая AccessViolationException.

Вероятно ли, что неисправная оперативная память приводит к исключению AccessViolationException?

Я бы сказал, что это многое более вероятно, что причиной является ошибка в вашей программе или библиотеке, которую вы вызываете.Однако первым шагом является выяснение причины или, что более важно, где возникает AccessViolationException.Попробуйте подключить отладчик, прервите доступ к AccessViolationExceptions и посмотрите, что происходит на самом деле.

Кроме того, предложение Бена С. является хорошим способом быстро исключить проблему с оперативной памятью.

Другие советы

Если у вас когда-нибудь возникнут сомнения по поводу неисправности оперативной памяти, просто запустите memtest86.

Но если ошибка всегда возникает при одном и том же вызове, то, вероятно, дело не в оперативной памяти.

Это происходит только на вашем компьютере разработчика?Если да, то вполне возможна неисправность оперативной памяти / жесткого диска (файла подкачки).Вы также можете захотеть переустановить .NET Framework на случай, если одна из библиотек (возможно, одна из встроенных DLL-файлов Image) была повреждена.

Проще говоря:

Если ошибка каждый раз возникает в разных разделах кода, это хороший показатель того, что что-то не так с вашей системой в целом.

С другой стороны, если ошибка повторяется в одном и том же фрагменте кода, то почти наверняка виноват именно этот фрагмент кода.

Как отмечалось в предыдущем ответе, используйте Memtest86 +, чтобы подтвердить, хорошая у вас память или нет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top