我将 Mono 运行时嵌入到现有的 Cocoa 应用程序中。我已经从 GitHub(主分支)构建了最新的运行时,并且在运行一些托管代码后退出应用程序在 mono_jit_cleanup() 期间给了我这个:
https://dl.dropbox.com/u/108566029/BAD_ACCESS.png
仅当我尝试通过 HttpWebRequest 发送 HTTP 请求时才会复制它。特别是如果我调用 GetRequestStream()。代码工作正常,所有托管对象都正确处理。mono_jit_cleanup() 只被调用一次。该问题仅在关闭运行时发生。
这也在最新的 Mono 2.10.x 分支上重现。但是我得到了 SIGSEGV。
这可能发生在不同的地方,所以它似乎是一个线程问题。
那么,我应该如何正确关闭运行时。mono_jit_cleanup() 调用是否足以正确处理运行时?我可以在不处理运行时(没有 mono_jit_cleanup() 调用)的情况下退出应用程序吗?
PS
我在 OSX 10.8.3 上使用 32 位版本的 Mono v2.0(实际上是 3.5)运行时。我链接到 libmono-2.0.1.dylib,所以它应该是 Boehm GC。SGen GC 也重现了同样的问题。
PPS
这里出现另一个错误https://dl.dropbox.com/u/108566029/SIGABRT.png