2013-04-05 3 views
2

Я внедряю Mono runtime в существующее приложение Cocoa. Я построил последнюю среду выполнения из GitHub (мастер филиала) и выхода из приложения после запуска некоторое управляемого кода дает мне это во время mono_jit_cleanup():Embedded Mono: EXC_BAD_ACCESS (SIGSEGV) при вызове mono_jit_cleanup()

https://dl.dropbox.com/u/108566029/BAD_ACCESS.png

Это только воспроизводится, когда я пытаюсь отправить запрос HTTP через HttpWebRequest. В частности, если я вызываю GetRequestStream(). Код работает нормально, и все управляемые объекты расположены правильно. Mono_jit_cleanup() вызывается только один раз. Проблема возникает только при выключении среды выполнения.

Это также воспроизводится на последней ветке Mono 2.10.x. Но тогда я получаю СИГСЭГВ.

Это может произойти в разных местах, поэтому это похоже на проблему с резьбой.

Итак, как я должен правильно завершить рабочую среду. Является ли mono_jit_cleanup() достаточным для правильного удаления среды выполнения? И могу ли я выйти из приложения без утилизации времени выполнения (без вызова mono_jit_cleanup())?



P.S.
Я использую 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

ответ

0

Стандартный моно исполняемым вызывает mono_jit_cleanup() просто отлично, так что мы должны были бы знать больше о том, что точный код вы звоните, в котором поток и т.д.

В любом случае вы можете просто выйти из приложения, не вызывая эту функцию.

Смежные вопросы