Например, вместо ReadFile(hFile, p^, ...) написано ReadFile(hFile, p, ...), причем где-нибудь совсем в другом месте программы. Данные читаются не туда, куда указывает p, а прямо в стек.
Что значит: "данные читаются не туда. куда указывает р, а прямо в стек"?
Вообще если изучить описание функции ...
Найдено 8 результатов
- 04.04.2012 08:19:28
- Форум: Lazarus
- Тема: Выравнивание стека и вызов АПИ x64
- Ответы: 4
- Просмотры: 3108
- 03.04.2012 23:04:35
- Форум: Lazarus
- Тема: Выравнивание стека и вызов АПИ x64
- Ответы: 4
- Просмотры: 3108
Re: Выравнивание стека и вызов АПИ x64
Тут можно поподробнее?
Здесь скорее забыто разыменование какого-нибудь указателя, или взятие адреса, что приводит к порче стека.
У меня дело так:
type
TMapViewOfFile= function(hFileMappingObject: THandle; dwDesiredAccess: DWORD;
dwFileOffsetHigh, dwFileOffsetLow ...
Здесь скорее забыто разыменование какого-нибудь указателя, или взятие адреса, что приводит к порче стека.
У меня дело так:
type
TMapViewOfFile= function(hFileMappingObject: THandle; dwDesiredAccess: DWORD;
dwFileOffsetHigh, dwFileOffsetLow ...
- 03.04.2012 20:21:40
- Форум: Lazarus
- Тема: Выравнивание стека и вызов АПИ x64
- Ответы: 4
- Просмотры: 3108
Выравнивание стека и вызов АПИ x64
Встретился к своему сожалению в багом, описываю:
v ar ...
procedure f1;
var ...
begin
p :=MapViewOfFile(hMap ,FILE_MAP_ALL_ACCESS,0,0,SIZE_1);
end;
И эта штука рабоатет в зависимости от того, выравнен ли стек на границу 0x20 !!
То есть пишу прогу, она работает ...
v ar ...
procedure f1;
var ...
begin
p :=MapViewOfFile(hMap ,FILE_MAP_ALL_ACCESS,0,0,SIZE_1);
end;
И эта штука рабоатет в зависимости от того, выравнен ли стек на границу 0x20 !!
То есть пишу прогу, она работает ...
- 10.03.2012 18:02:05
- Форум: Lazarus
- Тема: Падает *.Exe x64
- Ответы: 12
- Просмотры: 8500
Re: Падает *.Exe x64
Вопрос, а объект ядра используемый для синхронизации: Event или Semaphore?
Хорошее замечание, юзаю конечно семафор:
SincEvent:=CreateSemaphoreA(nil,1,1,nil);
Если кому-то понадобится операции со строками - советую юзать lstrcpy и подобные. За полчаса можно написать библиотеку с динамическим ...
Хорошее замечание, юзаю конечно семафор:
SincEvent:=CreateSemaphoreA(nil,1,1,nil);
Если кому-то понадобится операции со строками - советую юзать lstrcpy и подобные. За полчаса можно написать библиотеку с динамическим ...
- 10.03.2012 14:49:08
- Форум: Lazarus
- Тема: Падает *.Exe x64
- Ответы: 12
- Просмотры: 8500
Re: Падает *.Exe x64
Ребята, похоже что проблема решена. Суть:
У меня была написана функция типа
procedure Writeln1(s:string);
begin
WaitForSingleObject(SincEvent, 3000);
Writeln(s);
ReleaseSemaphore(SincEvent, 1, nil);
end;
И другая - по выводу информации в файл (я их юзал для отладки).
Юзал я их примерно ...
У меня была написана функция типа
procedure Writeln1(s:string);
begin
WaitForSingleObject(SincEvent, 3000);
Writeln(s);
ReleaseSemaphore(SincEvent, 1, nil);
end;
И другая - по выводу информации в файл (я их юзал для отладки).
Юзал я их примерно ...
- 10.03.2012 12:35:33
- Форум: Lazarus
- Тема: Падает *.Exe x64
- Ответы: 12
- Просмотры: 8500
Re: Падает *.Exe x64
Ism, спасибо, посмотрел - то что нужно, буду проверять..
И всем остальным тоже спасибо, но проблема пока не решена.
Добавлено спустя 1 час 45 минут 57 секунд:
Упростил все до минимума:
работаю 2 потока:
первый - просто мониторит появление новых файлов (и выводит в файл)
второй - по циклу гоняет ...
И всем остальным тоже спасибо, но проблема пока не решена.
Добавлено спустя 1 час 45 минут 57 секунд:
Упростил все до минимума:
работаю 2 потока:
первый - просто мониторит появление новых файлов (и выводит в файл)
второй - по циклу гоняет ...
- 09.03.2012 22:30:11
- Форум: Lazarus
- Тема: Падает *.Exe x64
- Ответы: 12
- Просмотры: 8500
Re: Падает *.Exe x64
Указатели я первым делом проверил, и действия которые приводят к падениям - ну упростил до простейшего Writeln (+ синхронизация конечно)...
Были бы указатели - то отваливалось бы всегда в каком-то одном месте, а тут - где повезет, даже закономерность не могу отследить...
Интересует, как с помощью ...
Были бы указатели - то отваливалось бы всегда в каком-то одном месте, а тут - где повезет, даже закономерность не могу отследить...
Интересует, как с помощью ...
- 09.03.2012 20:36:15
- Форум: Lazarus
- Тема: Падает *.Exe x64
- Ответы: 12
- Просмотры: 8500
Падает *.Exe x64
Win 7 x64, lazarus 0.9.30/2.4.4
Предистория: была написана программка (консольная), довольно большая, запутанная и многопоточная.
Писал для делфи 7, возникла необходимость откомпилить под 64 бита, для чего и был использован лазарус. Откампилил (все использованные структуры и размеры переменных ...
Предистория: была написана программка (консольная), довольно большая, запутанная и многопоточная.
Писал для делфи 7, возникла необходимость откомпилить под 64 бита, для чего и был использован лазарус. Откампилил (все использованные структуры и размеры переменных ...
