该线程试图读取或写入其没有适当访问权限的虚拟地址

时间:2010-07-28 11:51:23

标签: .net multithreading citrix

我开发了一个.NET 2.0扩展,它充当第三方应用程序的插件。除了思杰之外的任何东西都可以运行。当作为已发布的应用程序在Citrix上运行时,扩展程序会随机崩溃,这也会导致第三方应用程序崩溃。

我打开了一个转储文件,发现了一条报告的异常消息:

线程试图读取或写入没有相应访问权限的虚拟地址。

谷歌没有太多运气。该应用程序使用线程,我怀疑上面发生的地方,但确切地说是一个谜。如果我在citrix服务器上本地运行扩展(即不是已发布的应用程序),那么它可以正常工作。

我不期待这里的答案(如果有人这样做会很棒!)由于问题的一般性质,但是如果有人能指出我帮助解决问题或描述错误信息我会是非常感激。

谢谢,

Rob

2 个答案:

答案 0 :(得分:3)

错误消息的性质使它不太可能成为.NET 2.0代码的问题。这是因为.NET不允许你甚至尝试读/写它不应该的内存。

  • 检查您的扩展程序中是否有unsafe个代码。这种性质的代码可以绕过CLR通常会执行的验证检查。
  • 检查扩展程序使用任何非托管代码(COM或P / Invoke)的代码。可能会在那里生成错误。
  • 在Citrix环境中运行时,.NET CLR中可能存在导致问题的错误。

我要做的第一件事就是分析转储文件以查看发生故障的模块。您可以下载Windows Debugging Tools来协助完成这项工作。

答案 1 :(得分:2)

我不知道这是否会有所帮助。

使用Schneider Unity Pro打开项目时,我收到了相同的消息。在经历了一个冗长而漫长的消除过程之后,问题被隔离到了“不要保留最近打开的文档的历史”策略。