Картина маслом: программа висит, вайн периодически выкакивает в консоль 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 устаревшая или связка вайн/дебиан в неродной разрядности кривая?
Подводный камень TRTLCriticalSection
Модератор: Модераторы
Cheb писал(а):TRTLCriticalSection устаревшая или связка вайн/дебиан в неродной разрядности кривая?
TCriticalSection простая обертка над TRTLCriticalSection. Но вообще, у критических секций действительно есть таймаут, правда он значительно больше 60 секунд. А инициализация критической секции делается?
cs:= TCriticalSection.Create; //InitCriticalSection(cs);
в конструкторе моего thread'а
TRTLCriticalSection везде и всегда работало, кроме этой капризной связки Дебиан64/Вайн32
Возможно, я гоняюсь за призраками, как когда я вырезал многопоточность борясь с зависаниями, а потом выяснилось, что железо кривое -- мог бы сейчас хвалиться единственной в мире игрой под MS-DOS с многопоточностью (на Турбо Паскале, кстаты), но увы.
Остаётся лишь локти кусать.
в конструкторе моего thread'а
TRTLCriticalSection везде и всегда работало, кроме этой капризной связки Дебиан64/Вайн32
Возможно, я гоняюсь за призраками, как когда я вырезал многопоточность борясь с зависаниями, а потом выяснилось, что железо кривое -- мог бы сейчас хвалиться единственной в мире игрой под MS-DOS с многопоточностью (на Турбо Паскале, кстаты), но увы.
