Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
sayrus-smith
Guest
из программы на Embarcadero c++ 10.1(upd2) используем DirectOracleAccess41
TOracleQuery работает по-разному для платформ 32х и 64х разрядов:
если запрос правильный , то он выполняется,
если запрос неправильный (не может выполниться), то на 32х возникает Exception, который можно обработать,
на 64х - НЕ возникает Exception, программа рушится с окном Windows "Прекращена работа",
а отладчик выдает "с0000005 ACCESS_VIOLATION".
На форумах такая ошибка описывается в случаях некорректной работы с памятью.
Тут просто
q->SQL->Clear();
q->SQL->Add("...");
try {
q->Execute();
}catch(...) {
...
}
по стеку похоже циклится
rtl240.bpl
rtl240.bpl
ntdll.dll
ntdll.dll
ntdll.dll
...
6 сен 18, 12:25    [21666777]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46101

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

Posted via ActualForum NNTP Server 1.5

6 сен 18, 12:28    [21666780]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
sayrus
Member

Откуда:
Сообщений: 4
Dimitry Sibiryakov,

в тесте только эти строчки
Enable all warning [v] true
warning-ов нет
для х32 нормально работает
6 сен 18, 13:18    [21666864]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46101

Включить генерацию map-файла, потом DrMemory в руки и смотреть где конкретно идёт облом с
памятью.

Posted via ActualForum NNTP Server 1.5

6 сен 18, 13:24    [21666876]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46101

Или, раз уж у тебя билдер, используй CodeGuard (если его ещё не выпилили из Берлина).

Posted via ActualForum NNTP Server 1.5

6 сен 18, 13:26    [21666882]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2889
sayrus-smith,

debug dcu включи, может найдешь место точнее где валится.
6 сен 18, 13:40    [21666914]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
sayrus
Member

Откуда:
Сообщений: 4
makhaon,

CodeGuard не помогает
точное место отладчик показывает - не у меня
для х32 Exception ORA-... нормально перехватывается.
Может для х64 не те dll подтягиваются (пробовал с/без link with dynamic RTL)
6 сен 18, 14:01    [21666958]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46101

sayrus
CodeGuard не помогает

Да ну? А как ты его применял?

sayrus
точное место отладчик показывает - не у меня

Это всего лишь значит, что AV - вторичная ошибка, вызываемая попыткой поймать исключение
при уже разрушенной памяти. Попробуй убрать catch.

Posted via ActualForum NNTP Server 1.5

6 сен 18, 15:22    [21667093]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
sayrus
Member

Откуда:
Сообщений: 4
Dimitry Sibiryakov,

Tools codeGuard configuration
[v]enabled

option c++compililer
debugging
enableCodeguard [v]
All platform

(правда почему-то такая опция есть только в х32, в х64 - нет
в x32 файл .cgl создается, в х64 - нет)

Execute() без try... catch - та же ошибка AV (try есть еще в tWinMain)
6 сен 18, 16:05    [21667171]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46101

sayrus
такая опция есть только в х32, в х64 - нет

Значит они его так и не допилили для 64 битов. Ну, тогда остаётся только DrMemory.

sayrus
в x32 файл .cgl создается

Это значит, что даже в 32-х битах у тебя какая-то проблема с памятью. Читать и убивать.

Posted via ActualForum NNTP Server 1.5

6 сен 18, 16:24    [21667202]     Ответить | Цитировать Сообщить модератору
 Re: ошибка с0000005 ACCESS_VIOLATION в embarcadero 10.1 berlin для x64  [new]
sayrus
Member

Откуда:
Сообщений: 4
Dimitry Sibiryakov,

в cgl от х32 нет ошибок, только вызовы фунций, dll
6 сен 18, 16:30    [21667213]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить