Иногда при запуске игры или программы возникает ошибка Access violation at address, которая сообщает о проблеме на стороне прав доступа. Но это вовсе не означает, что действуют какие-то ограничения. Причем неважно в каком виде она появилась:
- read of address 00000000
- in module
- write of address
- the bat
- Или каком-то другом. Это все одно и то же.
В переводе на русский означает «Нарушение доступа по адресу». Но что это за проблема и как ее исправить? Давайте разбираться.
Содержание статьи
- Диагностика памяти
- Чистый запуск
- Удаление программ
- Сканирование на предмет ошибок
- Проверка системных компонентов
- Редактирование DEP
- Выключение UAC
- Другие способы решения
- Комментарии пользователей
Диагностика памяти
Первый шаг — запустить диагностику памяти. Есть два способа, как это сделать:
- Универсальный, используя утилиту Memtest.
- Для пользователей Windows 10 и 8. Разберем его подробнее.
В строку поиска вводим слово «памяти» и запускаем средство.
Выбираем первый пункт с пометкой «рекомендуется». Система перезагрузится и начнется сканирование.
Дождитесь завершения процедуры и посмотрите на графу «Состояние». Ошибок быть не должно. При их наличии выньте ОЗУ и протрите контакты ластиком, затем установите обратно. Если это не поможет, то замените старые планки новыми.
Чистый запуск
Предлагаю запустить компьютер в чистом режиме, чтобы узнать, не вызывает ли проблему одна из установленных программ.
Для этого:
- Введите msconfig в строке «Выполнить», комбинация «WIN + R».
- Переместитесь в «Службы» и скройте все от «Майкрософт». Отключите оставшиеся.
- Проделайте то же самое в разделе «Автозагрузка».
- Перезагрузите компьютер.
Если это устранило неполадку, то снова активируйте программы и отключайте их по одной, чтобы выявить неисправную. Часто сбой вызывают антивирусы, блокируя в целях безопасности некоторые приложения.
Удаление программ
Как говорил ранее, ошибку Access violation at address могут вызывать некоторые приложения. Чаще всего это fl studio, Artmoney, txdworkshop. Поэтому удалите лишние через деинсталлятор «Your Uninstaller» или любой другой. Желательно это делать из безопасного режима.
Если в безопасный режим войти не удается, то откройте диспетчер задач «CTRL + SHIFT + ESC», во вкладке «Процессы» найдите нужную утилиту и правым щелчком мыши откройте ее расположение. После этого удалите процесс.
Теперь, находясь в этой папке удалите содержимое.
Если приложение нужно, то попробуйте переустановить его. Предварительно очистив Windows утилитой «CСleaner».
Сканирование на предмет ошибок
Некоторые системные файлы могут отсутствовать или быть повреждены. Желательно проверить это и исправить. Делается в автоматическом режиме с помощью команд в командной строке.
DISM /Online /Cleanup-Image /RestoreHealth – нужен доступ в интернет.
sfc /scannow
Напишите их и нажмите после каждой «Enter». По завершении перезапустите ПК.
Проверка системных компонентов
Стоит убедиться, что в реестре указаны компоненты Windows, отвечающие за правильную ее работу.
Будьте осторожны при редактировании реестра, неправильные действия могут нарушить работу ОС. Действуйте четко по инструкции.
Для этого:
- Войдите в редактор через «WIN + R» — regedit.
- Перейдите по пути HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon и найдите два параметра: Userinit и Shell. Дважды щелкните по каждому из них. Убедитесь, что в графе «Значение» указаны правильные пути. При необходимости измените их.
Shell (должен ссылаться на исполняемый файл) – explorer.exe
Userinit (должен ссылаться на исполняемый файл) — C:\Windows\system32\userinit.exe
По окончании перезапустите компьютер.
Редактирование DEP
Возможно, ошибку Access violation at address (in module, read of address) вызывает компонент «DEP», блокирующий в целях безопасности некоторые программы. В качестве решения предлагаю внести приложение в список исключений.
Как это сделать:
- Откройте «Свойства» ярлыка «Компьютер».
- Перейдите в «Дополнительные параметры».
- Во разделе «Дополнительно» щелкните по «Параметры» быстродействия.
- Зайдите в «Предотвращение выполнения» и активируйте последний параметр с пометкой «кроме выбранных ниже». Укажите нужное приложение через кнопку «Добавить».
Выключение UAC
Большинство приложений разработанных на базе Java не работают из-за включенного контроля учетных записей, сокращенно «UAC». Давайте выключим его.
- Откройте классическую «Панель управления».
- Войдите в раздел «Учетный записи».
- Щелкните по изменению контроля.
- Передвиньте ползунок вниз до появления пометки «Никогда не уведомлять».
Другие способы решения
Если ничего не помогло, то предпримите следующие действия.
Помните, что Вы можете рассчитывать на мою помощь. Для этого напишите мне в комментариях.
petruchodd 129 / 126 / 22 Регистрация: 23.06.2009 Сообщений: 700 |
||||
1 |
||||
05.05.2011, 16:59. Показов 22415. Ответов 5 Метки нет (Все метки)
Всем привет, ребят. Может кто то знает или сталкивался с таким : Есть программа (на 6ом написана) . У меня она запускаеться нормально, у друга запускаеться тоже нормально. Попробовали ещо для тестов на других компах — а там ошибка
Появляеться она при запуске. Так вот — может можно по этим адресам как то узнать хоть примерно «где искать » в коде, что бы отловить или исправить. Просто это как то глупо — на 2-3 норм, на остальных 2-3 ошибка.
0 |
return (true); 1976 / 1111 / 221 Регистрация: 19.04.2011 Сообщений: 2,345 |
|
05.05.2011, 17:04 |
2 |
Такое бывает, когда люди пишут программы с ошибками, вот как тут к примеру.
1 |
129 / 126 / 22 Регистрация: 23.06.2009 Сообщений: 700 |
|
05.05.2011, 17:19 [ТС] |
3 |
Добавление : Ошибка выскакивает и потом с центра экрана и до посинения размножаеться… пока не убьешь ее в диспетчере задач..
0 |
Заблокирован |
|
05.05.2011, 17:40 |
4 |
1 |
21274 / 8291 / 637 Регистрация: 30.03.2009 Сообщений: 22,654 Записей в блоге: 30 |
|
06.05.2011, 09:51 |
5 |
Если кто сталкивался с таким или знает как по адресам че нить достать — подскажите пожалуйста Запустить программу из-под отладчика на той машине, где ошибка проявляется. С вероятностью 99% в программе используются неинициализированные данные или имеется выход за границу массива
1 |
129 / 126 / 22 Регистрация: 23.06.2009 Сообщений: 700 |
|
06.05.2011, 14:04 [ТС] |
6 |
Из под отладчика не получиться никак ( . Очень помогла программка(компонента) для билдера и делфи EurekaLog. Типа багрепорта.. Покрайней мере отлавливает и дает хоть какие то координаты ..
0 |
Table of Contents
Introduction
The access violation at address error shows that the software program for your device tried to access a protected memory address. Except for the program this is currently using; this ought not to be accessed through the program you are attempting to run.
For example, if the memory piece is called “delta” and the program that has access to it is called “alpha,” the delta memory address could only be accessed by alpha. A series of letters and numbers will appear after the Access Violation at address error.
What Could The Address Error Access Violation Mean?
Source:windowsreport.com
This error code, unlike a hexadecimal error code, is used to identify the cause of the problem as well as the solution.
If this error appears when you restart your computer, you should try running dxdiag from the Start menu’s Run prompt.
The DirectX files will be displayed as a result of this. This problem has three possible solutions.
If you have DirectX installed on your computer, the issue could be due to improper installation. It is recommended that you uninstall it and re-download the application file from the Microsoft website.
How To Fix An Address Access Violation?
Source:techissuesresolved.com
The most common cause of the Exception Access Violation error is hardware failure, but it should not be ruled out.
If the Exception Access Violation error persists after you’ve tried all of the solutions listed here, have your system’s hardware, particularly the RAM checked for damage.
Look For Malware On Your Computer
According to users, malware infections can cause this error to appear. Many of them said their PC was infected with a fake Chromium browser, which caused the error to appear.
Source:lifewire.com
As a result, it’s a good idea to run a full scan with your antivirus software. If your current antivirus is unable to locate and resolve the issue, we strongly advise you to seek out another solution.
When looking for the best antivirus for your computer, look for one that has a low system impact, identity protection features, and strong virus protection.
There are many good antivirus software programs that offer free trials, so you can try a few before deciding which one is best for you.
Disconnect And Reconnect Peripheral Devices
Source:groovypost.com
The Exception Access Violation error could be caused by one of the peripheral devices you’ve connected to the system, particularly Bluetooth devices. Disconnect them and then reconnect them.
Make Sure There Are No Hardware Issues
If your problem hasn’t been resolved by this time, you should have the hardware checked for errors. After stress testing the RAM, have the system physically examined for damage or lost wires. Take it in for repairs if you don’t know how to check for hardware damage.
Reinstall The Program
If you receive an Exception Access Violation while attempting to run a specific application, you may be able to resolve the issue by simply reinstalling that application.
myhowtoonline.com
Uninstall the problematic program from your computer and reinstall it. If possible, try downloading and installing the most recent version to see if that resolves the issue.
The Exception Access Violation error can cause various issues on your computer, but we hope you were able to resolve the problem by employing one of our solutions.
Turn off Data Execution Prevention
It is a Windows 10 security function that could help shield your pc in opposition to viruses and different safety threats. This is a very useful feature that can help protect your device from the various damages that malicious software can cause.
Harmful programs can attempt to assault Windows by running code from machine memory, which is set aside for Windows and other system files.
If another app imitates this, the DEP feature will prevent the app from running, and you will receive the error message ‘Exception Access Violation.’
- To disable Data Execution Prevention, follow these steps:
- Select System Properties from This PC menu.
- Locate the Performance option under the Advanced tab.
- Select Settings from the drop-down menu.
- Select Data Execution Prevention from the drop-down menu.
- “Turn on DEP for all programs and services except those I select,” select “Turn on DEP for all programs and services except those I select.”
- Click Add, then navigate to the Kindle app’s installation folder and find the.exe file.
- Make an exception and double-check your changes.
Quick Summary
That’s all there is to it. If you encountered the error message “Exception Access Violation,” you should now be able to resolve the problem using the solutions provided above.
Let us know how you fixed the error on your device in the comments section below, and we’ll continue to talk about it.
Вариантов возникновения ошибки может быть много:
Вирусы, некорректное завершение работы, некорректно установленная программа, ошибки в реестре, обновления windows и т.д.
Некоторые решения данной проблемы:
1. Проверка Антивирусом.
Для этих целей лучше использовать cureit, avz, avast. Или любой другой антивирус, имеющий возможности сканирования до загрузки WIndows.
В большинстве случаев это сработает.
2. Воспользоваться системной утилитой sfc /scannow.
sfc /scannow занимается проверкой и восстановлением целостности ваших системных файлов. Для этой процедуры вам понадобиться диск с установочным пакетом WIndows.
Чтобы воспользоваться этой командой нужно пройти в Пуск и в поле найти набрать «командная строка» (или CMD) нажать Enter. В окне ввести команду sfc /scannow, после чего начнется проверка и восстановление. (дистрибутив с windows должен быть установлен в cd-rom во время проверки)
3. Воспользоваться системной утилитой chkdsk с ключами /f /r
Программа CHKDSK (Chkdsk.exe) — средство командной строки, которая проверяет тома на жестком диске компьютера для решения проблем. Программа пытается решить любые проблемы, которые он находит. Например Chkdsk может восстановить проблем сбойные секторы, потерянные кластеры, файлы с общими кластерами и ошибки каталогов. Чтобы использовать программу Chkdsk, необходимо войти в систему с правами администратора или члена группы «Администраторы».
4. Изменить настройки DEP.
DEP (Data Execution Prevention) – предотвращение выполнения данных – это набор программных и аппаратных технологий, позволяющих выполнять дополнительные проверки содержимого оперативной памяти и предотвращать запуск вредоносного кода. Функция DEP позволяет отразить целый класс атак. В частности, DEP позволяет блокировать вирусы и другие вредоносные программы, пытающихся выполнить свой код из областей системной памяти, резервированных для Windows и других авторизованных программ. Обнаружив, что программа использует системную память неправильно, средство DEP принудительно закрывает программу и выдает соответствующее сообщение.
Чтобы отключить DEP для конкретной программы нужно проделать следующие действия:
Контекстное меню «Моего компьютера» — свойства — дополнительно — быстродействие — параметры — предотвращение выполнения данных. Далее отметить пункт Включить DEP для всех программ и служб, кроме выбранных ниже. Нажмите ниже добавить, и добавьте программу, вызывающую ошибку. Применить. Ок.
5. Воспользоваться сторонними утилитами для восстановления. Такие программы содержаться в различных Live CD. (не дописал…)
2001 г Ловим баги или Почему программы допускают «недопустимые операции»Е. Левшаков, В. Ковалев, mcsa.ru Ошибки — неизбежное зло программирования. Видимо, пока трудно даже представить средство с помощью которого можно избавится от них. Человеку, который выдумает это чудодейственное лекарство, благодарные потомки-программисты, несомненно, воздвигнут памятник. Пока же остается лишь заниматься обычным делом: ловлей багов. «Нарушение Доступа» — фраза, которую пользователи видят, когда приложение делает попытки обратиться к памяти, которая не обозначена для их использования — и как следствие происходит сбой в работе программы: Access violation at address <HEX_value> in module <Application.Exe>. Read of address <HEX_value_2> Ситуация, при которой Windows давала бы полную свободу программам — записывай данные куда хочешь, скорее всего бы привела к разноголосице программ и полной потери управления над компьютером. Но этого не происходит — Windows стоит на страже «границ памяти» и отслеживает недопустимые операции. Если сама она справиться с ними не в силах — происходит запуск утилиты Dr. Watson, которая записывает данные о возникшей ошибке, а сама программа закрывается. Известно, что при программировании, особенно крупных программных продуктов, уследить за всеми процессами в коде невозможно, да и нет необходимости. Использование сторонних компонентов и библиотек только усложняет дело. Именно поэтому программисты Delphi порой и сталкиваются со «своенравными» программами, которые то и дело норовят «сбросить пользователя». Итак, давайте рассмотрим некоторые вопросы, связанные с корректной средой программирования, так и непосредственно проблемы написания кода, которые ведут к возникновению ошибок типа «ошибка доступа» (AVS) и очертим наиболее известные пути их исправления. Мы можем поделить AVS, с которыми сталкиваются при разработке в Delphi, на два основных типах: ошибки при выполнения и некорректная разработка проекта, что вызывает ошибки при работе программы. Ошибки возникают при старте и закрытии Delphi или формировании проекта. Причиной могут являться сбои в «железе» компьютера. Эти ошибки могут быть вызваны различными источниками, включая систему BIOS, операционную систему или аппаратные подпрограммы драйверов. Некоторые видео-, звуковые или сетевые платы могут фактически вызывать подобного рода ошибки в Delphi. Для решения подобных аппаратных проблем можно предпринять последовательность неких «стандартных» ходов:
И в конце концов просто попытаться заменить драйвера на более свежие. Но помимо чисто железных проблем — большую головную боль могут вызвать ошибки в работе программного обеспечения. Особенно это касается непосредственно операционной системы. Зачастую Windows терпит крах спонтанно. Вот рекомендации которые помогут вам создать более устойчивую среду программирования: Хотя Windows 9X популярная система, разработку лучше проводить в Windows NT или Windows 2000 — это более устойчивые операционные системы. Естественно, при переходе на них придется отказаться от некоторых благ семейства Windows 95/98/Me — в частности, не все программы адаптированы для Windows NT/2000. Зато вы получите более надежную и стабильную систему. Не забывайте о том, как важно всегда иметь под рукой свежие версии компонентов для Delphi и дополнительных библиотек. В отличие от Windows создатели данных пакетов стараются от версии к версии уменьшать количество ошибок. Следите за тем, чтобы устанавливаемые компоненты были предназначены непосредственно для вашей версии Delphi. Попробуйте деинсталлировать чужеродные компоненты один за другим (или пакет за пакетом), пока проблема не будет устранена. Контролируйте все программные продукты, установленные на вашей машине и деинсталлируйте те из них, которые сбоят. Фаворитами AV среди них являются шароварные утилиты и программы и бета версии программных продуктов. Все вышеперечисленное в основном не касалось самого процесса программирования и в малой степени зависит от разработчика. Теперь же обратимся к теме, как не допустить при разработке программного продукта ситуации, при которой он сам будет являться причиной ошибки. Вы могли бы рассмотреть компилирование вашего приложения с директивой {$D}, данная директива компилятора может создавать файлы карты (файлы с расширением map, которые можно найти в том же каталоге, что и файлы проекта), которые могут послужить большой справкой в локализации источника подобных ошибок. Для лучшего «контроля» за своим приложением компилируйте его с директивой {$D}. Таким образом, вы заставите Delphi генерировать информацию для отладки, которая может послужить подспорьем при выявление возникающих ошибок. Следующая позиция в Project Options — Linker & Compiler позволяет вам, определить все для последующей отладки. Лучше всего, если помимо самого выполняемого кода будет доступна и отладочная информация — это поможет при поиске ошибок. Отладочная информация увеличивает размер файла и занимает дополнительную память при компилировании программ, но непосредственно на размер или быстродействие выполняемой программы не влияет. Включение опций отладочной информации и файла карты дают детальную информацию только если вы компилируете программу с директивой {$D+}. Эта информация состоит из таблицы номеров строк для каждой процедуры, которая отображает адреса объектных кодов в номера строк исходного текста. Директива $D обычно используется совместно с другой директивой — $L, что позволяет или запрещает генерацию информации о локальных символах для отладки. Таким образом вы без труда сможете найти точный адрес той подпрограммы, которая была ответственна за ошибку. Одна из наиболее общих причин ошибок выполнения — использование объекта, который еще не был создан. Если второй адрес при выдачи ошибки — FFFFFFF (или 0000000) Вы можете почти утверждать, что было обращение к объекту, который еще не был создан. Например, вызов метода формы, которая не была создана. procedure TfrMain.OnCreate(Sender: TObject); var BadForm: TBadForm; begin BadForm.Refresh; // причина ошибки end; Попытаемся разобратся в этой ситуации. Предположим, что BadForm есть в списке «Available forms» в окне Project Options|Forms. В этом списке находятся формы, которые должны быть созданы и уничтожены вручную. В коде выше происходит вызов метода Refresh формы BadForm, что вызывает нарушение доступа, так как форма еще не была создана, т.е. для объекта формы не было выделено памяти. Если вы установите «Stop on Delphi Exceptions» в Language Exceptions tab в окне Debugger Options, возможно возникновение сообщения об ошибке, которое покажет, что произошло ошибка типа EACCESSVIOLATION. EACCESSVIOLATION — класс исключение для недопустимых ошибок доступа к памяти. Вы будете видеть это сообщение при разработке вашего приложения, т.е. при работе приложения, которое было запущено из среды Delphi. Следующее окно сообщения будет видеть пользователь — и программа будет закрыта при совершение недопустимой операции: Access violation at address 0043F193 in module 'Project1.exe' Read of address 000000. Первое шестнадцатиричное число (‘0043F193’) — адрес ошибки во время выполнения программы. Выберите опцию меню ‘Search|Find Error’, введите адрес, в котором произошла ошибка (‘0043F193’) в диалоге и нажмите OK. Теперь Delphi перетранслирует ваш проект и покажет вам строку исходного текста, где произошла ошибка во время выполнения программы, то есть BadForm.Refresh. Естественно, что списка наиболее общих причин ошибок, вызывающих аварийное завершение работы программы, написанной в Delphi, в чистом виде нет. Есть несколько общих «узких мест» в коде и структуре программы, когда подобная ошибка может произойти. Перечислим наиболее распространенные. Недопустимый параметр API Если вы пытаетесь передать недопустимый параметр в процедуру Win API, может произойти ошибка. Необходимо отслеживать все нововведения в API при выходе новых версий операционных систем и их обновлений. Уничтожение исключения Никогда не уничтожайте временный объект исключения. Обработка исключения автоматически уничтожает объект исключения. Если вы уничтожите объект самостоятельно, то приложение попытается уничтожать объект снова, и произойдет ошибка. Zero:=0; try dummy:= 10 / Zero; except on E: EZeroDivide do MessageDlg('Can not divide by zero!', mtError, [mbOK], 0); E.free. // причина ошибки end; Индексация пустой строки Пустая строка не имеет никаких достоверных данных. Следовательно, попытка индексировать пустую строку — подобно попытке обратиться к нулю, что приведет также к ошибке: var s: string; begin s:=''; s[1]:='a'; // причина ошибки end; Обращение к динамической переменной Вы должны строить обращение к динамической переменной корректно, иначе вы перемещаете адреса указателей и возможно разрушаете другие выделенные ячейки памяти. procedure TForm1.Button1Click(Sender: TObject); var p1 : pointer; p2 : pointer; begin GetMem(p1, 128); GetMem(p2, 128); {эта строка может быть причиной ошибки} Move(p1, p2, 128); {данная строка корректна } Move(p1^, p2^, 128); FreeMem(p1, 128); FreeMem(p2, 128); end; Перечисленные подходы позволят избежать наиболее частых недочетов в разработке, которые могут вызвать столь неприятное как для пользователя, так и для разработчика сообщение о том, что программа выполнила «недопустимую операцию». Удачной вам ловли багов, господа! |