Все большой привет.
У меня процесс падает в одном из тредов в EnterCriticalSection ли LeaveCriticalSection.
В разных ситуациях падает в разных местах
. Конкретное место и причину отловить сложно.
Тредов много, критических секций тоже много.
В принципе, у меня такой вопрос — есть ли ограничение на количество critical sections на процесс?
По моим подсчетам, у нас в процессе открывется > 20000
.
Спасиба.
Serge.
Hасколько проще была бы жизнь, если бы она была в исходниках.
Здравствуйте, Sergeem, Вы писали:
S>У меня процесс падает в одном из тредов в EnterCriticalSection ли LeaveCriticalSection.
S>В разных ситуациях падает в разных местах . Конкретное место и причину отловить сложно.
S>Тредов много, критических секций тоже много.
S>В принципе, у меня такой вопрос — есть ли ограничение на количество critical sections на процесс?
S>По моим подсчетам, у нас в процессе открывется > 20000 .
Может,
EnterCriticalSection
[skip]
This function can raise EXCEPTION_POSSIBLE_DEADLOCK if the critical section is corrupt or deadlock detection is enabled. Do not handle this exception; either continue execution or debug the application.
Windows 2000/NT: In low memory situations, EnterCriticalSection can raise an exception. To avoid problems, use structured exception handling, or call the InitializeCriticalSectionAndSpinCount function to preallocate the event used by EnterCriticalSection instead of calling the InitializeCriticalSection function, which forces EnterCriticalSection to allocate the event.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, Sergeem, Вы писали:
S>>У меня процесс падает в одном из тредов в EnterCriticalSection ли LeaveCriticalSection.
S>>В разных ситуациях падает в разных местах . Конкретное место и причину отловить сложно.
S>>Тредов много, критических секций тоже много.
S>>В принципе, у меня такой вопрос — есть ли ограничение на количество critical sections на процесс?
S>>По моим подсчетам, у нас в процессе открывется > 20000 .
AB>Может,
AB>AB>EnterCriticalSection
AB>[skip]
AB>This function can raise EXCEPTION_POSSIBLE_DEADLOCK if the critical section is corrupt or deadlock detection is enabled. Do not handle this exception; either continue execution or debug the application.
AB>Windows 2000/NT: In low memory situations, EnterCriticalSection can raise an exception. To avoid problems, use structured exception handling, or call the InitializeCriticalSectionAndSpinCount function to preallocate the event used by EnterCriticalSection instead of calling the InitializeCriticalSection function, which forces EnterCriticalSection to allocate the event.
А как узнать, какой exception выброшен?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Anton Batenev, Вы писали:
AB>>Здравствуйте, Sergeem, Вы писали:
S>>>У меня процесс падает в одном из тредов в EnterCriticalSection ли LeaveCriticalSection.
S>>>В разных ситуациях падает в разных местах . Конкретное место и причину отловить сложно.
S>>>Тредов много, критических секций тоже много.
S>>>В принципе, у меня такой вопрос — есть ли ограничение на количество critical sections на процесс?
S>>>По моим подсчетам, у нас в процессе открывется > 20000 .
AB>>Может,
AB>>AB>>EnterCriticalSection
AB>>[skip]
AB>>This function can raise EXCEPTION_POSSIBLE_DEADLOCK if the critical section is corrupt or deadlock detection is enabled. Do not handle this exception; either continue execution or debug the application.
AB>>Windows 2000/NT: In low memory situations, EnterCriticalSection can raise an exception. To avoid problems, use structured exception handling, or call the InitializeCriticalSectionAndSpinCount function to preallocate the event used by EnterCriticalSection instead of calling the InitializeCriticalSection function, which forces EnterCriticalSection to allocate the event.
А>А как узнать, какой exception выброшен?
см. MSDN на тему SEH.
Кстати, обычно, такое количество критических секций свидетельствует о неправильной архитектуре проекта.