2

我将 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

4

1 回答 1

0

标准的 mono 可执行文件调用 mono_jit_cleanup() 就好了,所以我们需要更多地了解您正在调用的确切代码、在哪个线程等。

在任何情况下,您都可以直接退出应用程序而不调用该函数。

于 2013-04-06T09:43:18.760 回答