Найдено 8 результатов

myles
04.04.2012 08:19:28
Форум: Lazarus
Тема: Выравнивание стека и вызов АПИ x64
Ответы: 4
Просмотры: 3108

Re: Выравнивание стека и вызов АПИ x64

Например, вместо ReadFile(hFile, p^, ...) написано ReadFile(hFile, p, ...), причем где-нибудь совсем в другом месте программы. Данные читаются не туда, куда указывает p, а прямо в стек.

Что значит: "данные читаются не туда. куда указывает р, а прямо в стек"?
Вообще если изучить описание функции ...
myles
03.04.2012 23:04:35
Форум: Lazarus
Тема: Выравнивание стека и вызов АПИ x64
Ответы: 4
Просмотры: 3108

Re: Выравнивание стека и вызов АПИ x64

Тут можно поподробнее?
Здесь скорее забыто разыменование какого-нибудь указателя, или взятие адреса, что приводит к порче стека.



У меня дело так:
type
TMapViewOfFile= function(hFileMappingObject: THandle; dwDesiredAccess: DWORD;
dwFileOffsetHigh, dwFileOffsetLow ...
myles
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 !!

То есть пишу прогу, она работает ...
myles
10.03.2012 18:02:05
Форум: Lazarus
Тема: Падает *.Exe x64
Ответы: 12
Просмотры: 8500

Re: Падает *.Exe x64

Вопрос, а объект ядра используемый для синхронизации: Event или Semaphore?
Хорошее замечание, юзаю конечно семафор:
SincEvent:=CreateSemaphoreA(nil,1,1,nil);

Если кому-то понадобится операции со строками - советую юзать lstrcpy и подобные. За полчаса можно написать библиотеку с динамическим ...
myles
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;
И другая - по выводу информации в файл (я их юзал для отладки).
Юзал я их примерно ...
myles
10.03.2012 12:35:33
Форум: Lazarus
Тема: Падает *.Exe x64
Ответы: 12
Просмотры: 8500

Re: Падает *.Exe x64

Ism, спасибо, посмотрел - то что нужно, буду проверять..

И всем остальным тоже спасибо, но проблема пока не решена.

Добавлено спустя 1 час 45 минут 57 секунд:
Упростил все до минимума:
работаю 2 потока:
первый - просто мониторит появление новых файлов (и выводит в файл)
второй - по циклу гоняет ...
myles
09.03.2012 22:30:11
Форум: Lazarus
Тема: Падает *.Exe x64
Ответы: 12
Просмотры: 8500

Re: Падает *.Exe x64

Указатели я первым делом проверил, и действия которые приводят к падениям - ну упростил до простейшего Writeln (+ синхронизация конечно)...

Были бы указатели - то отваливалось бы всегда в каком-то одном месте, а тут - где повезет, даже закономерность не могу отследить...

Интересует, как с помощью ...
myles
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 бита, для чего и был использован лазарус. Откампилил (все использованные структуры и размеры переменных ...