Я встраиваю среду выполнения Mono в существующее приложение Cocoa. Я создал последнюю среду выполнения из GitHub (главная ветка), и выход из приложения после запуска некоторого управляемого кода дает мне это во время mono_jit_cleanup():
https://dl.dropbox.com/u/108566029/BAD_ACCESS.png
Он воспроизводится только при попытке отправить HTTP-запрос через HttpWebRequest. В частности, если я вызову GetRequestStream(). Код работает нормально, и все управляемые объекты размещаются правильно. mono_jit_cleanup() вызывается только один раз. Проблема возникает только при завершении работы среды выполнения.
Это также воспроизводится в последней ветке Mono 2.10.x. Но тогда я получаю SIGSEGV.
Это может происходить в разных местах, поэтому похоже на проблему с потоками.
Итак, как мне правильно отключить среду выполнения. Достаточно ли вызова mono_jit_cleanup() для правильного удаления среды выполнения? И могу ли я выйти из приложения без удаления среды выполнения (без вызова mono_jit_cleanup())?
PS
Я использую 32-битную сборку среды выполнения Mono v2.0 (на самом деле 3.5) на OSX 10.8.3. Я ссылаюсь на libmono-2.0.1.dylib, поэтому это должен быть Boehm GC. Та же проблема воспроизводится и с SGen GC.
PPS
Вот еще одна ошибка https://dl.dropbox.com/u/108566029/SIGABRT.png