我将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()调用)的情况下退出应用程序吗?
P.S。
我在OSX 10.8.3上使用32位版本的Mono v2.0(实际上是3.5)运行时。我链接libmono-2.0.1.dylib,所以它应该是Boehm GC。 SGen GC也重现了同样的问题。
P.P.S
这是另一个错误https://dl.dropbox.com/u/108566029/SIGABRT.png
答案 0 :(得分:0)
标准单声道可执行文件调用mono_jit_cleanup()就好了,所以我们需要更多地了解你所调用的确切代码,在哪个线程等。
在任何情况下,您都可以在不调用该函数的情况下退出应用程序。