FPC многопоточность и память

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

FPC многопоточность и память

Сообщение XProger » 20.11.2010 06:25:19

Потоки создаются при помощи BeginThread, в uses основного dpr модуля объявлены {$IFDEF DARWIN}cthreads, cmem, heaptrc,{/$ENDIF}
Проблема в том, что созданный поток использует и высвобождает память выделенную в основном потоке. В Windows всё работает как часы, в MacOS падает. Какие тонкости менеджера памяти под unix системы я не учёл?
Под MacOS ошибка иногда сопровождается сообщением
"malloc *** error for object 0xffffffff: Non-aligned pointer being freed"

P.S. Также не работает -dDEBUG под макосью
Аватара пользователя
XProger
новенький
 
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва

Re: FPC многопоточность и память

Сообщение Mr.Smart » 20.11.2010 12:50:23

Модуль heaptrc с менеджером памяти из cmem не работает!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: FPC многопоточность и память

Сообщение XProger » 24.11.2010 18:12:28

Стало полегче, но периодически всё равно проскакивают падения с ошибками.
Программа может одновременно работать с десятками потоков каждый из которых выделяет и высвобождает память.
Аватара пользователя
XProger
новенький
 
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва

Re: FPC многопоточность и память

Сообщение XProger » 01.12.2010 12:42:12

Без cmem та же проблема, смотрел на флажок NeedLock менеджера памяти - выставлен в False. Флажок менял, менеджер памяти на свой с критическими секциями заменял, но всё бестолку рандомно проскакивает ошибка:
malloc: *** error for object 0x1: Non-aligned pointer being freed
*** set a breakpoint in malloc_error_bread to debug
<Error>: doClip: empty path
*** mmap(size=4261416960) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_bread to debug
<Error>: doClip: empty path
Runtime error 216 at и куча адресов

Опять же, в винде всё работает отлично, память из других потоков выделяется и высвобождается успешно.
Аватара пользователя
XProger
новенький
 
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru