Подводный камень TRTLCriticalSection

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

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

Подводный камень TRTLCriticalSection

Сообщение Cheb » 10.11.2013 09:19:55

Картина маслом: программа висит, вайн периодически выкакивает в консоль err:ntdll:RtlpWaitForCriticalSection section 0x1d4148 "?" wait timed out in thread 0009, blocked by 3d3d3d3d, retrying (60 sec)
Wine 1.4.1 32бит + Debian 7.2 wheezy 64бит, FPC 2.6.2

Переписал код с использования напрямую TRTLCriticalSection на использование TCriticalsection из модуля syncobjs. Всё заработало.

Вопрос: это TRTLCriticalSection устаревшая или связка вайн/дебиан в неродной разрядности кривая?
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Подводный камень TRTLCriticalSection

Сообщение kazalex » 10.11.2013 10:46:28

Cheb писал(а):TRTLCriticalSection устаревшая или связка вайн/дебиан в неродной разрядности кривая?

TCriticalSection простая обертка над TRTLCriticalSection. Но вообще, у критических секций действительно есть таймаут, правда он значительно больше 60 секунд. А инициализация критической секции делается?
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: Подводный камень TRTLCriticalSection

Сообщение Cheb » 10.11.2013 11:18:55

cs:= TCriticalSection.Create; //InitCriticalSection(cs);
в конструкторе моего thread'а

TRTLCriticalSection везде и всегда работало, кроме этой капризной связки Дебиан64/Вайн32
Возможно, я гоняюсь за призраками, как когда я вырезал многопоточность борясь с зависаниями, а потом выяснилось, что железо кривое -- мог бы сейчас хвалиться единственной в мире игрой под MS-DOS с многопоточностью (на Турбо Паскале, кстаты), но увы. :cry: Остаётся лишь локти кусать.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34


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

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

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

Рейтинг@Mail.ru
cron