tag:blogger.com,1999:blog-1702873441071265539.post2972111299443383158..comments2023-05-29T19:02:20.570+03:00Comments on Блог GunSmoker-а: Access Violation в деталяхGunSmokerhttp://www.blogger.com/profile/15611696588191431330noreply@blogger.comBlogger52125tag:blogger.com,1999:blog-1702873441071265539.post-11641230464069089712019-06-07T05:24:47.460+03:002019-06-07T05:24:47.460+03:00АV при закрытии приложения. Появляется при добавле...АV при закрытии приложения. Появляется при добавлении на форму нового грида. Добавил прога запустилась работает без проблем, но при закрытии - АvAnonymoushttps://www.blogger.com/profile/17461978505907649627noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-16089120964060343222019-05-21T06:50:36.481+03:002019-05-21T06:50:36.481+03:00У меня эта хня происходит но без кнопки Break. Bor...У меня эта хня происходит но без кнопки Break. Borland C++ BuilderAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-51187317570774338032017-10-27T11:41:16.409+03:002017-10-27T11:41:16.409+03:00SetLength? :)SetLength? :)GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-20419391370888121332017-10-11T17:00:07.504+03:002017-10-11T17:00:07.504+03:00Забыл указать: pnl_PathButtons и pnl_Buttons это о...Забыл указать: pnl_PathButtons и pnl_Buttons это одна и та же TPanel, я случайно удалил кусок строки, когда создавал пост и только потом увидел :)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-82632186568166068662017-10-11T16:52:12.588+03:002017-10-11T16:52:12.588+03:00Здравствуйте! Не могу понять, что делаю не так...
...Здравствуйте! Не могу понять, что делаю не так...<br /><br />type <br /> TPathButtons = array of TSpeedButton;<br />var<br /> PathButtons: TPathButtons;<br />...<br /> try<br /> PathButtons[i]:= TSpeedButton.Create(pnl_Buttons); // на этой строке получаю AccessViolation<br /> PathButtons[i].Parent := pnl_PathButtons;<br /> PathButtons[i].Align := alLeft<br /> PathButtons[i].Width := 100;<br /> PathButtons[i].Caption := 'SpeedButton';<br /> except<br /> ShowMessage('не работает');<br /> end;<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-53927544844767367212017-01-23T20:54:15.201+03:002017-01-23T20:54:15.201+03:00Отношение было...))) Детская ошибка. забыл один ка...Отношение было...))) Детская ошибка. забыл один каталог скопировать. бывает....Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-44131034832739845322017-01-23T20:24:21.516+03:002017-01-23T20:24:21.516+03:00А это какое отношение имеет к исключению класса EA...А это какое отношение имеет к исключению класса EAccessViolation?GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-52575016386526872572017-01-23T20:16:47.947+03:002017-01-23T20:16:47.947+03:00Ерунда у меня полная и за 22 года впервые. Ибо про...Ерунда у меня полная и за 22 года впервые. Ибо программа самописная не работает всего лишь на одном компе. Intel Core Duo E8200 (причем работает на Core Duo E7500).<br />Все процедуры по включению Range Check Errors делал. (хотя не уверен насколько глубоко зашел Build, ибо может есть модули откомпилированные без него и хранятся в пакетах).<br />Т.к. программа х64, то DEP отключал путем "bcdedit.exe /set {current} nx AlwaysOff".<br />БИОС облазил. Ничего не нашел да и что искать - ума не приложу. (комп 2010 года. единственное отличие от остальных - зеркальный RAID).<br />Причем не работает как-то извращенно. Не открываются отдельные окна. Я полагаю, что есть компоненты, которые не дружат с этим компом. Но как найти подвох. И главное что исправлять, если в остальных случаях работает. <br />Могу добавить, что та же программа, но откомпилированная под х86 платформу работает.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-32356802004434041062016-10-19T17:54:41.061+03:002016-10-19T17:54:41.061+03:00Что вы ожидаете услышать в ответ? "У вас ошиб...Что вы ожидаете услышать в ответ? "У вас ошибка в строке 152"?<br /><br />Я же не вижу ваш код, у меня нет доступа к адресам памяти в вашем приложении. Это вы должны нам рассказывать, почему у вас возникает ошибка, а не мы вам.<br /><br />А делать вы это должны - исследуя ситуацию с помощью инструментов. Как? А вот как написано в этой статье.<br /><br />Например, читаем раздел "Ищем причину возникновения Access Violation анализом данных", смотрим на "Read of address 00000031". Уже отсюда я могу заключить, что у вас произошла попытка прочитать поле объекта, ссылка на который = nil (т.е. объект уже удалён или не создан). Причём, объект относительно сложный, т.к. смещение 31 - достаточно велико (у простых/небольших объектов это будет 4, 8, 12...).<br /><br />Далее, "at address 00456D60" сообщает вам <b>точное</b> место, где произошла ошибка. Я не телепат, я не знаю, что у вас за код находится по этому адресу. А вот <b>вы</b> можете как использовать Search / Go To Address, так и просто отладчик - при исключении он остановит вас именно на этом месте. В любом случае вы посмотрите на строчку кода, проверите значения переменных в ней и увидите, кто из переменных, к которым обращается строчка кода, равна nil. Более того, отладчик покажет вам и стек вызовов - так что вам станет понятно, как вы попали в это место. Всё это описано в статье в разделах "Ищем место возникновения Access Violation" и "Ищем причину возникновения Access Violation анализом кода".<br /><br />Теперь у меня возникает вопрос: какое слово в статье не понятно? Что вы пытались сделать самостоятельно?GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-28303769281984833952016-10-05T22:59:43.816+03:002016-10-05T22:59:43.816+03:00Александр, здравствуйте.
Пишу программу на Delphi ...Александр, здравствуйте.<br />Пишу программу на Delphi 7. Испрользую BDE, EhLib 6.2.<br />В программе на главной форме есть TPageControl в нем два TabSheet'a, на первом находится DBgridEh1 в котором отражаются отфильтрованные записи из BDEMainTable, на втором TabSheet'e находится DBGridEh2 через который я вношу изменения в BDEMainTable, если я вношу изменения через DBGridEh2, перехожу на TabSheet1 потом снова возвращаюсь на TabSheet2, снова вношу изменения, снова перехожу на TabSheet1, перехожу на TabSheet2 и при нажатии на поле для изменения значения вылетает Access Violation at address 00456D60 in module 'My.exe'.Read of address 00000031. Помогите, пожалуйста разобраться, в чем может быть проблема?<br />Владимирnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-7478114119968478482015-10-18T15:21:22.232+03:002015-10-18T15:21:22.232+03:00Да, гарантировано вы получите A/V только при попад...Да, гарантировано вы получите A/V только при попадании в первые 64 Кб (<a href="http://www.gunsmoker.ru/2011/06/blog-post.html" rel="nofollow">зона отлова нулевых указателей</a>) и в 64 Кб <a href="http://www.transl-gunsmoker.ru/2008/11/64.html" rel="nofollow">на границе 2 Гб</a>. В остальном - <a href="http://www.gunsmoker.ru/2011/04/windows-spin-off.html#n13" rel="nofollow">как повезёт</a>.GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-41996097492741820312015-10-18T14:37:15.895+03:002015-10-18T14:37:15.895+03:00Я имел в виду следующее: nil гарантировано указыва...Я имел в виду следующее: nil гарантировано указывает "в никуда" и обращение недопустимо. В остальных случаях при обращении по адресу может как возникнуть AV (если скажем память защищена или не выделена) так и нет (нам не повезло и мусорный указатель чисто случайно указал на доступный нам кусок памяти).<br /><br />Ещё раз повторюсь, вопрос чисто был академический. Вопрос родился из желания привести студентам пример кода иллюстрирующий полезность FreeAndNil. В принципе, Я ответ получил. Спасибо.Михаилnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-85599751124460847002015-07-06T22:29:17.743+03:002015-07-06T22:29:17.743+03:00Вопрос не понятен, поскольку nil ничем не отличает...Вопрос <a href="http://www.gunsmoker.ru/2008/10/x-y-z.html" rel="nofollow">не понятен</a>, поскольку nil ничем не отличается от любого другого адреса. <br /><br />Например: P := Pointer(1); I := PInteger(P)^; - даст A/V, поскольку $00000001 < 4 Кб, и, следовательно, принадлежит защитной странице памяти, в которую входит и nil. <br /><br />Другой пример - P := VirtualAlloc(..., MEM_RESERVE); I := PInteger(P)^; - даст A/V, т.к. просходит обращение к зарезервированному, но не выделенному участку памяти.<br /><br />Третий пример: P := VirtualAlloc(...); VirtiulFree(P); PInteger(P)^; - даст A/V, т.к. просходит обращение к не выделенной памяти. Правда, при условии, что в программе - 1 поток (что вы, в общем случае, гарантировать не можете).GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-76277217555873089482015-05-16T11:01:05.826+03:002015-05-16T11:01:05.826+03:00Александр, можете посоветовать способ (в академиче...Александр, можете посоветовать способ (в академических целях) <b>гарантированно</b> получить AV без обращения по nil?<br />Я полагаю, это вот например не гарантия вылета?<br /><br />procedure P(Sender: TObject);<br />var<br /> S: array [0..0] of Integer;<br /> I: Integer;<br />begin<br /> I := 1; <br /> S[I] := 0;<br />end;<br /> <br />или<br /><br />procedure P2;<br />var<br /> S: array [0..0] of Integer;<br /> I: Integer;<br />begin<br /> I := -6;<br /> try<br /> S[I] := 1;<br /> Abort;<br /> except<br /> end;<br />end;Михаилnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-19515754180539243142014-08-19T09:20:01.484+04:002014-08-19T09:20:01.484+04:00> можно ли устранить проблему без исходников ПО...<i> > можно ли устранить проблему без исходников ПО? </i><br /><br />Нельзя. <br /><br />Но можно попытаться её скрыть - как это было ранее, до замены материнской платы. Проблема (баг) была, но её не было видно. В целом, это шаманские танцы - попытка найти комбинацию условий, при которых программа будет работать. <br /><br />А если смотреть на это шире: где гарантии, что программа работает правильно? Если в ней есть одна ошибка (обращение к неинициализированной памяти), то почему бы не быть и другой?GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-66196776356485631992014-08-19T08:35:20.556+04:002014-08-19T08:35:20.556+04:00Здравствуйте, хорошая статья. Вот только возник во...Здравствуйте, хорошая статья. Вот только возник вопрос. Я не пишу сам код, я лишь эксплуатирую поставленное для нашей компании ПО, т.е. доступа к кодам у меня нет.<br />ПО работало на протяжении 5-6ти лет без проблем, пока не вышла из строя материнская плата ПК. Заменили плату на аналогичную, все драйвера подхватились, кроме звука (установили вручную отдельно), ну и установили новый антивирус macafe. В итоге при запуске ПО (программа взвешивания ж/д транспорта) появляется ошибка <b> "Acsess violation at adress 004A3C58 in module "WinVesy.exe" read of adress 00000034" </b> можно ли устранить проблему не без исходников ПО?? Теоретически может ли ПО конфликтовать с антивирусом? ПО ошибку выдаёт не всегда, например если перезагрузить копм и сразу запустить ПО оно запускается.<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-15642160997490387252014-04-18T12:51:38.252+04:002014-04-18T12:51:38.252+04:00Это риторический вопрос? Любой Access Violation об...Это риторический вопрос? Любой Access Violation обусловлен багом в коде. <a href="http://www.transl-gunsmoker.ru/2010/08/997.html" rel="nofollow">В 99% случае - в вашем коде</a>. <br /><br />Или вы не понимаете, как такое может быть что иногда работает, а иногда - нет? Ну вот есть пример в п. 7 к разделу "Ищем причину возникновения Access Violation анализом кода".<br /><br />Или вы не знаете, как искать причину? Ну вот же целая статья. А для сторонней машины даже и <a href="http://www.gunsmoker.ru/2009/05/access-violation.html?showComment=1326302938820#c6705844673995530982" rel="nofollow">комментарий</a>.GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-73912219081530987502014-04-17T20:09:25.287+04:002014-04-17T20:09:25.287+04:00у меня такая проблема, написал програмку у меня вс...у меня такая проблема, написал програмку у меня все работает и у многих других тоже, а у некоторых вылазит AV, с чем это может быть связано?Альбертnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-76182015771077029632013-06-22T01:14:11.113+04:002013-06-22T01:14:11.113+04:00в моем случае , без открывания или закрывания прог...в моем случае , без открывания или закрывания программ , само произвольно вылезает примерно 70 окон с ошибкой : <br />access violation at address 037b84db Read of address 00000180<br />Что делать в моем случае ?<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-36138580352325061082012-10-26T02:29:30.447+04:002012-10-26T02:29:30.447+04:00Какое слово непонятно в статье?Какое слово непонятно в статье?GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-13721477447720284582012-10-24T16:07:06.586+04:002012-10-24T16:07:06.586+04:00Добрый день! У меня возникла проблема с WebService...Добрый день! У меня возникла проблема с WebServices <br />Итак...сделан клиент и сервер...с помощью C++ Builder на Windows 7<br />Клиент работает отлично на Windows 7, XP, Windows Server 2003, а вот на Windows Server 2008 R2 пишет ошибку access violation at address....(при этом на сервере в логах вообще ничего нет...то есть он просто не может дать запрос на сервер)<br />Помогите советом как решить эту проблему...пожалуйстаAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-30224908495357983052012-05-24T11:02:13.961+04:002012-05-24T11:02:13.961+04:00что делать если access violation at address in mod...что делать если access violation at address in module rtl60.bpl вылезает при закрытии программы и даже при просто закрытии делфи.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-7608335298049440012012-05-23T10:38:14.929+04:002012-05-23T10:38:14.929+04:00Огромное вам спасибо! С помощью самого начала ваше...Огромное вам спасибо! С помощью самого начала вашей статьи за минуту нашёл ошибку, которую не мог найти 3 часа (не приходилось раньше пользоваться отладчиком)!<br />В очередной раз убедился - всегда виноват сам.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-32385908201067817752012-03-22T14:33:43.486+04:002012-03-22T14:33:43.486+04:00Я НИФИГА не поняла...Я НИФИГА не поняла...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-60680779654753459072012-03-18T21:00:54.276+04:002012-03-18T21:00:54.276+04:00Здравствуйте! Спасибо автору статья хороша! Хотел ...Здравствуйте! Спасибо автору статья хороша! Хотел бы заметить что у меня вылетала AV только потому что я вместо Объект:=Тип_Объекта.create; писал Объект.create; хотя казалось бы ;)Anonymousnoreply@blogger.com