WPF渲染线程挂起

Luk*_*keN 24 wpf rendering hang

我在wpf应用程序中遇到问题,其中渲染线程停止渲染,但UI线程和帮助程序线程仍在抽取消息.

它似乎与演示字体缓存的损坏有关,但这似乎不太可能,因为应用程序在重新启动时恢复正常.

渲染线程偶尔会挂起,阻止绘图更新,但UI线程仍在处理消息.

我们已经看到了在将缩放变换应用于通过删除字体缓存解决的文本块时出现的类似问题(类似于此处),但是这个特定问题不可靠地重复.

诊断此问题根本原因的最佳方法是什么?

我在连接时打开了微软的一个错误,但除非其他人投票,否则不会考虑它.

Luk*_*keN 5

冻结是由托管的activex控件呈现视频引起的.

控件使用directshow的方式存在竞争条件,导致directx挂起.

我们通过使用procdump进行进程转储然后在Windows 调试器中打开转储文件来发现此问题.

网上狩猎并检查本机调用堆栈显示了一个问题,即临界区指针的高位字节被清零,这意味着其中一个线程正在等待一个永远不会发出信号的不存在的临界区.

这允许我们通过执行启动和停止视频的代码来创建可重复的挂起.我们删除了控件,挂起停止了.