« WMVソースフィルタ のメモリリーク | メイン | バーンダウンチャート »

2007年05月15日

吉里吉里 ムービー拡張日誌2:: VMR のカスタムアロケーターの不正アクセス問題

    

VMR 関係はいじっていないのに、VMR モードで再生して終了すると不正アクセスが発生するようになった。
ソースを元に戻しても発生する。
が、前のマシンで動かすと発生しない。
発生するマシンで、デバッガを使わずに直接起動すると発生しない。
なんだろうこれは?

ドライバのバージョンを上げてみたり、いろいろとするが改善されない。
そこでふと、そういえば不正アクセスが発生しているアドレスにブレークを張ればいいことに気付き張る。
カスタムアロケーター&イメージプレゼンターのデストラクタで発生している。

メンバには、D3D 関係のものと IVMRSurfaceAllocatorNotify9 を保持している。
デストラクタでは、明示的に D3D 関係の破棄などを行っている。
IVMRSurfaceAllocatorNotify9 は CComPtr に任せて放置。
もしかして、IVMRSurfaceAllocatorNotify9 から Direct3D 関係のものへアクセスが発生しているのか?
そこで、IVMRSurfaceAllocatorNotify9 を明示的に D3D 関係の破棄前に Release するようにしたところ発生しなくなった。

なぜデバッガで動かした時のみ発生したのかはわからないが、Direct3D 関係のものよりも前にIVMRSurfaceAllocatorNotify9 を Release する必要があったようだ。



投稿者 Takenori : 2007年05月15日 23:41




comments powered by Disqus
Total : Today : Yesterday : なかのひと