Чуть больше конкретики:
Все знают, что не редко приложение может терять контекст, устройство Direct3D. После его потери, необходимо произвести восстановление как ресурсов, так и самого устройства. Алгоритм прост:
1) Удалить D3D ресурсы(Release или OnLostDevice)
2) Восстановить устройство(Reset)
3) Восстановить ресурсы(с нуля создать или OnResetDevice)
Но вот есть одна проблема. Если хоть ОДИН из ресурсов не будет удалён до Reset, но будет использован для рендера до потери устройства, то Reset будет невозможен, а иногда даже может вызывать Access Violation Exception, который, обычно, не хендлится приложением, так как это SEH-исключение.
А знаете что хуже всего? Отловить где же и почему это исключение появилось — не реально. Как и не реально узнать, какой ресурс, а главное где, не был релизнут. Приходится отрубать куски кода, пока не заработает.