| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Direct3D приложение зависает |
| Автор: Joyer 13.1.2009, 15:12 |
| Здравствуйте! Вопрос по отладке приложений. Я написал Direct3D-шный screensaver. Все работает стабильно, но иногда приложение зависает. Не могу найти закономерности. Суть программы в показе примитивного слайд-шоу. Работает с одними и теми же файлами. Изображения для слайд-шоу загружаются в отдельных потоках, потом синхронизируются, потом загружаются в текстуры. Проверял process explorer-ом на предмет утечки памяти. Объем занимаемой памяти не увеличивается, но постоянно растет page faults. Я не очень опытный в вопросе работы с DirectX, возможно я неправильно освобождаю текстуры или что-нибудь еще… Бывают ли утечки видео памяти? Если да, то как их проверить? Нужно ли освобождать текстуру и спрайт перед каждой загрузкой нового изображения? Извините за изобилие вопросов, просто теряюсь в догадках. Основной вопрос: как найти ошибку? Заранее благодарен, Дмитрий. |
| Автор: Alexeis 13.1.2009, 15:39 |
| Если используются потоки, то начинать нужно с них. Может там элементарный дедлок Если используются WaitForSingleObject, то в случае длительного ожидания, можно выдавать ошибку. |
| Автор: Joyer 13.1.2009, 20:59 |
| WaitForSingleObject точно не использую. изучаю пока http://forum.vingrad.ru/forum/topic-60076.html А что такое дедлок? Это когда осн. поток ждет другого а тот уже не работает? |
| Автор: Alexeis 13.1.2009, 22:29 |
Когда потоки ждут друг друга. |
| Автор: Joyer 14.1.2009, 01:19 |
| Да нет, вроде как не потоки. Дело в том, что я отображаю изображения с жесткого диска. Их не много и когда последний из списка показан, программа отображает первый. т.е. действия цикличны, а зависает программа по истечении произвольного количества времени. Это приводит к мысли о воздействии внешних факторов (кол-во) свободной памяти, место на HDD, или кол-во доступной видео памяти. Можно ли как-то проверить наличие не освобожденных указателей? Ведь при загрузки текстуры резервируется видеопамять... |
| Автор: Joyer 16.1.2009, 03:59 |
| Кто-нибудь в курсе по поводу page faults? Это единственное, что приходиться подозревать. Очень внимательно пересмотрел структуру потоков. Перечитал http://forum.vingrad.ru/forum/topic-60076.html Может есть особенности в конструкциях try - except, при использовании их в потоках? |
| Автор: Alexeis 17.1.2009, 15:47 |
| Joyer, ну решение таких вопрос из области телепатии. Если проект большой, то никто не будет его изучать целиком за вас. Если есть подозрительные фрагменты, то выкладывайте. |
| Автор: Joyer 20.1.2009, 05:52 |
| Проблемма была в организации потоков. Больше ответов получил на более корректно поставленный вопрос здесь: http://forum.vingrad.ru/forum/topic-244130/anchor-entry1761595/0.html Alexeis Спасибо, за время потраченное на мою проблему. Добавлено через 1 минуту и 9 секунд |