Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Отключение потоков


Автор: m0Hax 25.3.2009, 21:17
Проблема связана с запуском программы в BDS2009. Система 64-битная. Прочессор четырех-ядерный.

При запуске любого проекта стартует поток (в Event log - Thread Start: Thread ID:...), который как я понял осуществляет необходимый мне расчет. Потом стартует еще 3 потока с разными ID (я так понимаю соответствующие оставшимся ядрам процессора). 


Если завершить проект до выхода из последних трех потоков вылетает окно с ошибкой следующего содержания:

bds.exe - bordbk120N.dll 

Assertion failure: "(!"SetThreadContext failed")"
in ..\win32src\thread32.cpp at line 434
Continue execution?

Yes   No

В не зависимости от выбранного варианта продолжать выполнение или нет - происходит либо продолжение отладки приложения, либо зависание BDS. Далее приходится перезагружать полностью всю BDS. Кроме того возникают проблемы с отладкой.

Но если при отладке дождаться все таки выхода из потоков (Thread Exit), то при завершении проекта все нормально - нет никаких ошибок. Ошибки так же отсутствуют и при случае завершения проекта до запуска этих трех потоков.

Так вот вопрос - можно ли отключить запуск ненужных потоков (приложения достаточно простые и не требуют использования потоков)?  

З.Ы.: Потоки я сам не создаю в программе - видимо это фишка системы, ибо на 32-битной системе подобных коллизий не наблюдается. 

Автор: Klin 25.3.2009, 22:22
Цитата(m0Hax @  25.3.2009,  22:17 Найти цитируемый пост)
Система 64-битная. Прочессор четырех-ядерный.

Простите за оффтоп, но аццкий сотона...

Насчет задачи (не сплю вторые сутки - вырубает, поэтому могу быть не объективен), возможно вам помогут следующие темы:

http://forum.vingrad.ru/topic-132242.html

http://forum.vingrad.ru/topic-251807.html

http://forum.vingrad.ru/topic-60076/view-all.html

Последняя ссылка по делфе, но там много теории, которая возможно, окажется вам полезной.

Автор: PriZraK 29.5.2009, 14:32
Открыть bordbk120N.dll в любом HEX редакторе и измененить 1 байт по смещению 0x74 от 245181 до 0xEB.
Версия bordbk120N.dll — 120.8.11.14378.

Автор: fess 30.5.2009, 22:57
Для других версий надо искать 01 00 48 74 47 80 3D и заменять 74 на EB.

Автор: pei7a 11.5.2010, 18:12
Delphi_2007_2009_WOW64_Debugger_Fix ищите в и

Автор: nitroG 24.10.2010, 16:52
спасибо за файлик, очень здорово помог smile 

Автор: Emileo 30.11.2010, 04:29
Все заработало, СПАСИБО большое!

Автор: mollusk 2.6.2011, 11:37
Thanks for the patch  smile 

Автор: Blindfold 30.3.2012, 09:53
Спасибо за патч!

Автор: 4Got 19.11.2012, 12:13
Огромное спасибо автору и всем, кто помог решить проблему. Из-за этого моё психическое состояние стабилизировалось, ато хотельсь разбить комп просто. СПАСИБО

Автор: Dem_max 19.11.2012, 16:55
Все таки так делать и нужно всегда !!!
Но если при отладке дождаться все таки выхода из потоков (Thread Exit)

Автор: drdead 17.1.2013, 13:13
Спасибо за патч!
Нервов ушло - уйма. думал - в коде налажал. 

Автор: PsymoN 4.4.2014, 18:28
Спасибо за патч!   smile 
вылетала данная ошибка на C++ Builder 2007.

Автор: noxic 24.6.2016, 11:38
Класс, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)