【发布时间】:2014-11-29 16:22:15
【问题描述】:
每隔一段时间,我的软件会由于以下消息的异常而崩溃:
"附加信息:运行时遇到了一个致命错误。错误的地址是0x72938d57,在线程0xe34上。错误代码是0xc0000005。这个错误可能是CLR中的错误或不安全或非用户代码的可验证部分。此错误的常见来源包括 COM-interop 或 PInvoke 的用户封送错误,这可能会损坏堆栈。
如果有这个异常的处理程序,程序可以安全地继续。"
它是从 .net RSACryptoServiceProvider.Encrypt 方法开始生成的。 要查看它,请参阅https://github.com/HadiModarres/MRelay/blob/master/ConsoleApplication9/EncryptedRelay.fs 第 94 行
我的问题是为什么会发生这种情况,我可以做些什么来捕获从这样的非托管代码生成的异常
【问题讨论】:
-
@ildjarn 是的,但我调用 rsa.Encrypt 的方法是同步的。
-
一种晦涩的编程语言中的一个晦涩的错误。艰难的一个。
-
@GregS 实际上是由于该方法不是线程安全的,锁定对象显然不会在 let 绑定中执行任何操作。 ildjarn 删除了他的评论,所以我投票赞成你的评论:)
标签: exception f# rsa unmanaged rsacryptoserviceprovider