0xc0000005 access violation reading location 0x00000000 — Мир ПК

Мгновенный способ устранения ошибки 0xc0000005

Ошибка 0xc0000005 очень распространенная в во всех версиях операционной системы Windows, так что я надеюсь, информация, содержащаяся в этой статье, в полной мере, поможет Вам решить эту проблему.

Существует множество причин по которым может появиться ошибка 0xc0000005, так как она охватывает множество различных проблем. В связи с этим, вам придется попробовать ряд решений для устранения этой ошибки.

Когда появляется ошибка 0xc0000005

Как правило, при возникновении ошибки, вы получаете следующее сообщение:

Произошла ошибка приложения и генерируется журнал ошибок. Исключение: нарушение прав доступа (0xc000000), Адрес.

Это сообщение появляется после попытки запустить в Windows любого приложения. После закрытия окна об ошибке, быстрее всего, у вас сработает блокировка на запуск этого приложения.

Код ошибки 0xc0000005 может проскакивать и в других сообщениях об ошибках, все зависит от того, какое приложение вы пытаетесь установить или запустить. Эта ошибка может появляться во время использования встроенных инструментов операционной системы, например дефрагментация диска.

Причины появления этой ошибки многочисленны. Однако наиболее распространенные причины это:

  • Вредоносные программы.
  • Ошибки реестра.
  • Неправильно установленные драйвера и неисправность памяти.

Иногда эту ошибку 0xc0000005 может вызывать так же неправильно установленные обновления безопасности для Windows.

Как исправить ошибку 0xc0000005

Из – за уникальной природы ошибки 0xc0000005, нет четкого правила для ее исправления, т.к она ссылается на множество проблем. Число решений является столь же многочисленно, как и причин, по которым появляется ошибка 0xc0000005.

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

Первый шаг по устранению ошибки 0xc0000005 – выполните сканирование реестра

Ошибка 0xc0000005 очень часто возникает в результате плохо обслуживания и проблем в реестре операционной системы. Конфликты в реестре, как правило возникают, из – за некорректной установки и удаления программ.

Очень часто, пользователи компьютеров, устанавливают новые программы, но при этом, не удаляют старые версии.

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

Неправильно или случайно удаленная запись может привести к выходу из строя операционной системы.

Поэтому что бы эту работу не выполнять вручную, было разработано достаточно программного обеспечения для работы с реестром.

Вашей задачей остается просмотреть программу с официального сайта и установить. Как я уже писал ранее, существует множество решений для очистки реестра, но я рекомендую вам использовать «CCleaner», в первую очередь из за универсальности, безопасности, повышенной производительности к очистке системы и ее восстановлению.

Второй шаг по устранению ошибки 0xc0000005 — поиск и устранения вредоносных программ или вирусов.

Если вы систематически получаете ошибку 0xc0000005 при открытии различных приложений, то быстрее всего, на вашем компьютере завелся вирус.

При малейших подозрениях на вирус, необходимо, немедленно, запустить полную проверку системы. Если на вашем компьютере не установлено антивирусное программное обеспечение, вы можете ознакомиться с рейтингом «Топ 10 антивирусных программ».

Если же, на вашем компьютере после полной проверки, не было обнаружено вирусов, попробуйте сменить антивирусное ПО и затем, снова, выполнить полную проверку.

Третий шаг по устранению ошибки 0xc0000005 – проблемы с драйверами видеокарты

Очень часто пользователи получают ошибку 0xc0000005 сразу после обновления драйверов на видеокарту. Если эта ошибка произошла впервые и перед этим вы обновляли драйвера на видеокарту, то я рекомендую вам откатить драйвера к предыдущей версии.

Удалить драйвера на видеокарту очень просто:

  1. Нажимаем — «Мой компьютер», далее жмем «Свойства»
  2. Далее жмем «Диспетчер устройств» и находим наш «Видеоадаптер»
  3. Нажимаем на правую кнопку мыши и жмем «Удалить»

После этих нехитрых манипуляций, драйвера на видео карту должны обновиться автоматически.

Если этого не произошло, проделайте тоже самое, только вместо удаления видеодрайвера, нажмите «Обновить видеодрайвер».

Четвертый шаг по устранению ошибки 0xc0000005 – проблемы с драйверами принтера

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

Для получения более подробной информации о том, как это сделать, я предлагаю вам ознакомиться со статьей «Как правильно установить драйвера на компьютер или ноутбук»

Пятый шаг по устранению ошибки 0xc0000005 – отключить предотвращение выполнение данных (DEP)

Предотвращение выполнения данных (DEP) впервые использовалось в Windows XP Service Pack 2.
В основном это набор программных и аппаратных технологий, предназначенных для создания дополнительных проверок памяти для того, что бы защитить ее от вирусов. Начиная с Windows XP SP2 и далее, DEP применяется в приложениях и аппаратных компонентах.

Но реальность такова, что существуют некоторые приложения, которые не полностью совместимы с DEP. Приложения которые использую технику «динамической генерации кода» и не отмечают эти сгенерированные коды, как правило, имею проблем с DEP. Приложения разработанные без SafeSEH тоже склонны к проблемам с DEP.

Когда приложение нарушает DEP, пользователь получит сообщение STATUS_ACCESS_VIOLATION (0xC0000005).

Если вы уверены, что причина появления ошибки 0xC0000005 связана с проблемами DEP, тогда у вас есть 2 варианта:

  1. Связаться с владельцем приложения и попросить решить эту проблему.
  2. Можете отключить DEP для приложения которое систематически вызывает ошибку 0xC0000005, это можно сделать выполним инструкцию ниже.
    • Во – первых, убедитесь что вы обладаете правами администратора.
    • Нажмите «Пуск», далее «Выполнить» или [Нажмите WIN + R ], в поиске напишите sysdm.cpl и нажмите OK

  3. Появится «Свойства системы», здесь, нажмите на «Дополнительно», а затем «Параметры».
  4. В «Параметры быстродействия» нажмите на «Предотвращение выполнения данных», а затем нажмите на «Включить DEP для всех программ и служб, кроме выбранных ниже» и нажмите «Добавить».
  5. Откроется окно для загрузки exe файла, просто перейдите к ехе файлу программы, которая вызывает систематические ошибки 0xC0000005, выделите ее, а затем нажмите на «Открыть».
  6. После того, как вы это сделали, нажмите на «Применить», а затем «ОК»

Шестой шаг по устранению ошибки 0xc0000005 – неисправность ОЗУ

Существует вероятность, что ошибка 0xc0000005 может появляться и из – за проблем с оперативной памятью (Random Access Memory). Если у вас стали появляться ошибки после установки новой оперативной памяти, просто извлеките планку оперативной памяти, а затем проверьте, перестали появляться ошибки или нет.

Если вы давно не меняли или не тестировали оперативную память на ПК, то можете рассмотреть вопрос о проведении тестов с оперативкой. Специальные тесты ответят вам на вопрос в каком состоянии ваша RAM.

Седьмой шаг по устранению ошибки 0xc0000005 – обновите Internet Explorer 6.0

На сегодняшний день, людей использующих или у которых установлен IE6 осталось крайне мало, но все – же, иногда, встречаются. Если вы относитесь к этому числу людей, установите более новую версию браузера, а лучше, вообще откажитесь от этого браузера.

IE6 не понимает HTML тега span и если такой встречается на странице, у вас будет выскакивать ошибка 0xc0000005.

Восьмой шаг по устранению ошибки 0xc0000005 – удалите Windows Update KB2859537

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

Удалить последнее обновление очень просто:

  1. Заходим в панель управления Windows 7 («Пуск» — «Панель управления»)
  2. Нажимаем на вкладку «Программы — удаление программы»
  3. Слева вверху выбираем строку «Удаление обновления»
  4. Ищем нужное нам обновление и жмем «Удалить»

Вот и все! Все очень просто и легко.

Девятый шаг по устранению ошибки 0xc0000005 – используйте средство проверки системных файлов

Если вы перепробовали все методы написанные выше и устранить ошибку 0xc0000005 не удалось, тогда вам ничего не остается, как выполнить последний шаг — нужно запустить проверку системных файлов.

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

Если у вас возникли вопросы, вы можете задавать их в комментариях и я с радостью отвечу на них.

0xC0000005: Access violation reading location 0x00000000

I’m having a very strange issue with a space invaders game I’m working on. Basically I get an access violation error:

Unhandled exception at 0x5edad442 (msvcr100d.dll) in SpaceInvaders.exe: 0xC0000005: Access violation reading location 0x00000000.

when I include the piece of code below. visual studio takes me to «strcmp.asm» when debugging. Note that Im not using strcmp() in any of my code. Is there anything wrong with the code, or is this a problem beyond the scope of what I’ve included? Thanks for any help

3 Answers 3

This line looks suspicious:

You’re never incrementing i , so you keep assigning to invaders[0] . If this is just an error you made when reducing your code to the example, check how you calculate i in the real code; you could be exceeding the size of invaders .

If as your comment suggests, you’re creating 55 invaders , then check that invaders has been initialised correctly to handle this number.

«Access violation reading location 0x00000000» means that you’re derefrencing a pointer that hasn’t been initialized and therefore has garbage values. Those garbage values could be anything, but usually it happens to be 0 and so you try to read from the memory address 0x0 , which the operating system detects and prevents you from doing.

Check and make sure that the array invaders[] is what you think it should be.

Also, you don’t seem to be updating i ever — meaning that you keep placing the same Invader object into location 0 of invaders[] at every loop iteration.

The problem here, as explained in other comments, is that the pointer is being dereference without being properly initialized. Operating systems like Linux keep the lowest addresses (eg first 32MB: 0x00_0000 -0x200_0000) out of the virtual address space of a process. This is done because dereferencing zeroed non-initialized pointers is a common mistake, like in this case. So when this type of mistake happens, instead of actually reading a random variable that happens to be at address 0x0 (but not the memory address the pointer would be intended for if initialized properly), the pointer would be reading from a memory address outside of the process’s virtual address space. This causes a page fault, which results in a segmentation fault, and a signal is sent to the process to kill it. That’s why you are getting the access violation error.

Not the answer you’re looking for? Browse other questions tagged c++ access-violation or ask your own question.

Linked

Related

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.4.3.36504

Access violation reading location 0x00000000

Access violation reading location 0x00000000

The full error i’m getting is Unhandled exception at 0x0162EF4C in MAIN.exe: 0xC0000005: Access violation reading location 0x00000000

I think this is just a symptom of an underlying problem. I’ve been struggling with these types of issues off and on for many years and have never figured out for sure why they happen.

I get this error only with a release build with the following settings:

/nologo /debug:full /O3 /Qipo /fpp /I»C:Program Files (x86)IntelComposer XEmklincludeia32″ /I»C:Program Files (x86)MATLABR2010bexterninclude» /warn:all /debug-parameters:all /fp:fast=2 /Qfp-stack-check /module:»ReleaseINTERMEDIATE\» /object:»ReleaseINTERMEDIATE\» /Fd»ReleaseINTERMEDIATEvc110.pdb» /check:uninit /libs:static /threads /Qmkl:sequential /c

When i run the debug build the program seems to run correctly.

If i throw a simple write statement:

before the line that this error occurred on, the program will run without throwing the error. If i change the build settings to /O2 I can get it to run but produce incorrect results.

I ran the program in inspector, and i get a critical item «Unhandled application exception» and a «Invalid memory access» on the same line, but i don’t see anything obvious that points to a cause for this error.

In my experience with these issues, i’ve seen lots of strange behavior for example a simple assignment statement where after execution the left hand side doesn’t equal the right hand side, but then if the same statement is repeated the value will «stick».

I have no c functions being called (i had thought these were the problem previously).

Has anyone else run into this before?

That the behavior changes by adding I/O statements suggests that you have data corruption going on. This can often be difficult to diagnose — impossible without a test case! Sometimes Intel Inspector XE’s memory analysis can detect problems, and you should turn on all run-time checking, not just uninit, which is not as effective as one would want.

Yes i have read that thread, i actually read it again last night before posting this.

I’ve tried turning on various run time checks, the problem is some of them when turned on cause «warning #10182: disabling optimization; runtime debug checks enabled», which causes the program to run without errors. I only seem to ever experience these issues with optimization on.

/check:stack is the one that triggers that message. You could try doing without it. What does /standard-semantics do for you here? You mentioned allocatables — without that, assignments to allocatables (other than deferred-length character) don’t get automatically (re)allocated.

I get the same error on the same line with /standard-semantics.

Sorry I don’t follow you about allocatables. where did i mention them? Are you saying that i have an allocatable (array) issue?

>>Unhandled exception at 0x0162EF4C in MAIN.exe

Is this a mixed language program with a C/C++ main? (or WinMain?)

If so, from IVF documentation:

When the main program is written in Fortran, the Fortran compiler automatically creates any code needed to initialize the Fortran Run-time Library (RTL). The RTL provides the Fortran environment for input/output and exception handling. When the main program is written in C/C++, the C main program needs to call for_rtl_init_ to initialize the Fortran RTL and for_rtl_finish_ at the end of the C main program to shut down the Fortran RTL gracefully. With the Fortran RTL initialized, Fortran I/O and error handling will work correctly even when C/C++ routines are called.

No, it is a fortran main.

There are a few C routines, but none of them are called. My first reaction to this error was to compile/link without the C objs and comment out the calls to them even though they aren’t used in this case but it made no difference.

There is nothing more we can do here without a test case. You can submit it to Intel Premier Support if you prefer, but I see you may be using MATLAB, which complicates things.

I’ll make the general comment that there is no single cause for access violations. You have to approach each case individually. As I mentioned earlier, given the changeable behavior, it is very likely that memory is getting corrupted or perhaps your program is relying on uninitialized memory. I generally start at the point of error, see where the bad address comes from (analyzing the instruction stream and registers), and work backwards from there. It is usually difficult.

yeah that’s about what i expected.

How do i go about «analyzing the instruction stream and registers»? is there any good information on how to do this online somewhere?

How do i go about «analyzing the instruction stream and registers»? is there any good information on how to do this online somewhere?

As Steve recommended, provide a test case. Include the Matlab code, the C and Fortran code, along with information about versions of the software packages used, and instructions to reproduce the problem.

When a program does not produce this symptom in debug build, but does in release build, it is often an indication of use of uninitialized data. A typical example of this is the assumption of a once only flag being initialized to 0 (when no initialization is expressly made).

It crashes on this line:

012505EC vmovsd xmm4,qword ptr [edi+edx*8-8]

So it looks to me that EDI should not be zero and/or EDX should not be one. I briefly pondered tracing the memory/registers back, but i think it would take me the rest of my life to do.

Thanks for the tip Jim, i tried compiling with Fortran>Data>Initialize Saved Variables to Signaling NaN = Yes (/Qinit:snan) and it threw the following error on a line where an array of zeros was divided by another array of zeros:

forrtl: error (65): floating invalid (Multiple floating point traps)

To clarify there aren’t any uninitialized variables, but for some reason changing the compiler setting above causes the above error to be thrown even though the calculation arguements are unchanged (0/0). In this case this ratioarray of NaNs isn’t even used at all. If i comment this line, it runs without throwing the «access violation reading location. » error. So it would seem that these calculations are influencing the memory somehow at least with (/O3).

. which leads me to the question: can these 0/0 calculations corrupt other memory? I was aware that this calculation was happening and i don’t use the elements that are NaN regardless, at most i use a portion of this array (not the NaNs) where almost always some unused elements are NaN. Also there are a couple other places where i’m intentionally generating NaNs by calculating 0/0, is this bad?

thanks for the help

If there is stuff that is not used more than likely optimisation removes that code entirely. The layout of your code is thus entirely different so any memory corruption will influence different things and have different symptoms (or none that may be evident).

If you code has div zeros which are in fact bugs what other problems do you have? You have have /check:uninit /check:stack on runtime and /warn:interfaces /warn:declarations?

>>012505EC vmovsd xmm4,qword ptr [edi+edx*8-8]

Fortran arrays are typically 1-based. What the above is likely performing is

edi is holding the base of the array
edx is holding the index to the array
the *8 indicates the element size is 8 (real(8))
the -8 removes the 1 for the 1-based array indexing.

The problem is that the base of the array (edi) is 0. IOW your array argument is invalid.

Other than for uninitialized variables, causes for seeing 0 or junk in an array address are:

1) A prior array reference (store) with index out of bounds corrupts an array descriptor.
2) A prior array reference (store) with index out of bounds corrupts the stack (this may alter either an array descriptor or an address of an array descriptor)
3) Inconsistent interfaces
4) Calling a subroutine or function that returns a pointer to an array where the array existed on the stack of the called subroutine or function.
5). others.

For your current error, tracing back to where edi is loaded might yield information as to what is getting corrupted.

I suggest making a test run with array subscript bounds runtime check enabled. This may catch 1) and 2).
Also make a test run with gen-interfaces, check-interfaces. This may catch 3), it won’t catch interoperability calls

Problem 5) is a little harder to catch automatically. After addressing 1) to 4), visually inspect all of your functions and subroutines and locate the ones that return an array or array subsection. Be mindful that in Debug build, locally declared arrays have SAVE attribute. If the Release build builds for OpenMP or is the latest Fortran standard, then locally declared arrays are AUTOMATIC (stack based). If the function or subroutine is returning an array or section of an array that is local to the function or subroutine, the returned descriptors will work up until the point where that portion of the stack gets reused. The reuse (corruption) will then occur by something totally unrelated to the code experiencing the corruption.

Ошибка при запуске приложения 0xc0000005

FixErro » Компьютеры » Ошибка при запуске приложения 0xc0000005

Ошибка при запуске приложения 0xc0000005 является довольно распространённой. Её описания могут быть разными, например, «access violation 0xC0000005», «Ошибка при инициализации приложения (0xc0000005)» или «Exception 0xc0000005 EXCEPTION_ACCESS_VIOLATION«. В этой статье вы узнаете как исправить ошибку 0xc0000005 в Windows 7 и Windows 10. В отличии от ошибок синего экрана, здесь всё гораздо проще. Решение однозначное и исправить его легко.

0xc0000005 — как исправить ошибку в Windows 7

Чтобы решить проблему ошибки 0xc0000005 в Windows 7, необходимо удалить обновления, из-за которых она возникает. Некоторые программы могут «тянуть» за собой обновления при установке, однако, в основном, они устанавливаются автоматически.

Итак, чтобы удалить обновление, являющееся причиной ошибки, необходимо открыть меню Пуск и вставить туда следующие строчки:

wusa.exe /uninstall /kb:2859537

Эти строчки нужно вставить в меню «Пуск» в Windows 7

Также вы можете удалить обновление через панель управления. Для этого необходимо открыть Панель управления -> Удаление программ -> Просмотр установленных обновлений, найти в списке нужное нам обновление и нажать кнопку «удалить».

Если удаление обновления KB2859537 не помогло, аналогичным способом (через пуск или панель управления) удалите обновление KB2872339. Если не помог и этот вариант, удалите KB2882822 и KB971033. После удаления каждого обновления желательна перезагрузка.

Полный список для удаления обновлений в Windows 7:

Более запущенный случай ошибки 0xc0000005

Бывает так, что ни одно приложение не открывается из-за кода ошибки 0xc0000005, поэтому вы просто напросто не можете запустить даже средство удаления обновлений (wusa.exe). В таком случае, если у вас Windows 7, необходимо попробовать запустить систему в безопасном режиме. Для того, чтобы запустить командную строку и запустить программу удаления обновлений, совсем необязательно грузить систему целиком. Поэтому нам будет нужен пункт «Безопасный режим с поддержкой командной строки».

Полный список команд для удаления обновлений, вызывающих ошибку 0xc0000005 и как её исправить:

  • wusa.exe /uninstall /kb:971033
  • wusa.exe /uninstall /kb:2859537
  • wusa.exe /uninstall /kb:2872339
  • wusa.exe /uninstall /kb:2882822

Если в безопасном режиме с поддержкой командной строки загрузиться не удаётся, попробуйте вместо пункта безопасного режима выбрать «Устранение неполадок компьютера». Однако, его может не оказаться, особенно если у вас версия Windows после «семёрки». Остаётся еще один вариант: сделать загрузочный диск с Windows или USB флешку. После того, как загрузочный носитель будет готов, откройте командную строку. Для этого после загрузки с установочного диска выберите восстановление системы, затем нажмите на «командную строку». Также её можно вызвать сочетанием клавиш Shift + F10.

Далее необходимо найти системный диск с Windows. Для этого можно ввести в строке «explorer».

Обычно загрузочному носителю выделяется диск «X»

Далее необходимо получить список обновлений установленной ОС. Для этого в командной строке необходимо ввести:

Где C — буква диска с установленной системой

Если же всё правильно, в ответ вы получите список множество информации, среди которой можно найти установленные обновления Windows.

Если всё получится, вы получите список обновлений, установленных в вашей системе.

Oops! Список может получиться настолько большим, что не вся информация поместится на экран. Что делать?

Нужно изменить настройки окна командной строки. Для этого щёлкните по заголовку окна правой кнопкой и откройте свойства (Properties). Далее увеличьте буфер экрана до 2000 (или больше, если этого не хватит).

Далее необходимо сделать следующее: в полученном списке необходимо найти обновления: KB971033, KB2872339, KB2859537, KB2882822 и скопировать остаток строки после текста «Package Idetity:»

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

После того как вы уже скопировали название пакета (обновления), остаётся лишь ввести его в командную строку следующим образом:

DISM /Image:C: /Remove-Package /PackageName:строка_которую_вы_скопировали

В итоге у вас должно получиться что-то подобное:

После удаления выбранных обновлений ваша система снова заработает как полагается.

P.S.: есть еще один метод, который может вам помочь: удаление всех файлов в папке С:WindowsSoftwareDistributionDownload. Далее необходимо через безопасный режим сделать восстановление системы.

Еще варианты как исправить ошибку 0xc0000005

  • На время запуска программы отключите антивирус. Проверьте карантин: некоторые антивирусы любят «изымать вирус» из исполняемого файла, в итоге он оказывается «битым» и не запускается.
  • Как уже было сказано — восстановление системы наше всё.
  • Причиной может стать функция DEP. Как отключить или включить эту функцию вы можете найти здесь:
  • Проверьте вашу систему на вирусы
  • Проверьте работу оперативной памяти. Из-за неё часто возникает ошибка 0xc0000005.
  • Если ваша система лицензионная, смело звоните в техподдержку Microsoft и просите о помощи.

Иначе проблема может возникнуть снова.

Всё перепробовали, но проблема осталась? Пишите в комментарии!

С уважением, редакция FixErro.com

Задайте вопрос

или поделитесь своим способом решения проблемы

Читать еще:  Exception access violation 0xc0000005 minecraft

Запись опубликована в рубрике Access. Добавьте в закладки постоянную ссылку.