【问题标题】:MSMQ causes Windows 8 to crash with a BSODMSMQ 导致 Windows 8 崩溃并出现 BSOD
【发布时间】:2013-03-28 04:36:18
【问题描述】:

我使用 Windows 8 Pro、C# 和 .NET 4.5

我使用 MSMQ 在远程机器上读取或查看或发送消息,但它会导致操作系统蓝屏...

本地没有问题,但只有当我尝试通过代码使用 msmq 访问远程机器时。

代码在 XP/Seven 和 Server 2008/2012 下完美运行

这是一个小例子:

var messageQueue = new MessageQueue(string.Concat("FormatName:DIRECT=", addressType, ":", _queueServer, @"\private$\", _queueName), false, false, QueueAccessMode.Receive);

messageQueue.Receive() => BSOD!!!

有人有解决办法或解释吗?

谢谢,

亲切的问候。

【问题讨论】:

  • 这似乎是 MSMQ 中一个相当严重的错误......非特权用户代码永远不会导致 BSoD。
  • 蓝屏死机会很有帮助。

标签: c# windows-8 msmq


【解决方案1】:

如果你进入 C:\windows\minidump

然后使用“Windows 调试工具”打开 *.dmp 文件

这应该可以更深入地了解问题的性质。

【讨论】:

  • 我从来没有用过这个...我如何使用这些工具来查找错误?!
  • 所以你会去这里msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx 然后查找此链接“将 Windows 调试工具安装为独立组件(来自 Windows SDK)”
  • 并在上面的同一页面上安装它后,为您的特定操作系统下载符号包。安装好后打开。转到文件>>>打开故障转储并指向小型转储文件所在的位置,等待它加载,中提琴它应该让您了解导致问题的驱动程序或问题。列出的驱动程序有 99.999% 的时间是 cuplprit,另外 0.001% 的时间,该驱动程序因其他原因而失败,但至少您有一个方向可以进行故障排除。
  • OOo 我应该更好地阅读您的问题,我很抱歉,如果问题实际上与您的 MQ 连接有关,那么它不会发现错误。这只会告诉您 MQ 是否是问题所在,或者是否有其他原因导致它崩溃。我应该读得慢一点 derp lol
【解决方案2】:

找到了!!!

MSMQ 4.0 随 windows server 2008 一起提供,任何操作系统的最后一次更新默认使用 ipv6。 因此,您必须停用 IPV6 以防止 Windows 8 下的 BSOD 其他操作系统中的事件,您必须停用它才能读取远程队列!

【讨论】:

  • 启用 IPv6 支持不会导致崩溃。如果启用 IPv6 是导致 BSOD 的原因(我对此表示怀疑),它将发生在 Windows 7 和 Windows Server 2008 R2 和 Windows Server 2012 上。
  • 嗨,事实是,当我在 Windows 8 上激活 IPV6 并读取远程队列时,我的电脑崩溃了。当我停用它时,它运行没有问题。
  • 如果没有 BSOD 错误代码,您不能排除崩溃是由于驱动程序错误或其他仅因 IPv6 而无法发生的原因。正如我指出的,问题应该存在于 Windows Server 2012 中,但它不存在。
【解决方案3】:

dnx:你的意思是在远程机器上还是在你自己的本地机器上禁用 ipv6?

【讨论】:

  • 我在 9 月收到了来自 MS 的修补程序 (KB2840622)。很抱歉在这里通知它的延迟。热修复解决了这个问题。support.microsoft.com/kb/2840622
  • @jha,感谢您指出修补程序,似乎解决了我在 Windows Server 2012 上的 BSOD 问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多