Мы переносим приложение с 10.6 до 10.8. Я смотрю на dylib, который мы загружаем в приложении. Я столкнулся с очень необычным сбоем в Очередь работ по сбору мусора со следующим сообщением.
malloc: Thread::suspend(): unable to suspend a thread: err = 268435459, Thread 0x111000000: _pthread = 0x108129000, _thread = 0x8b07, _stack_base = 0x108129000, enlivening on, 0 local blocks
Для приложения GCC_ENABLE_OBJC_GC = required
установлено. Если у меня есть GCC_ENABLE_OBJC_GC = required
в dylib, он все равно будет терпеть крах. Я не могу отключить сборщик мусора в приложении. Я должен справиться с этим сбоем из моего dylib.
Причина аварийной ситуации заключается в том, что сборщик мусора не может приостановить поток. (как говорится в журнале). Этот поток создается с помощью thread_create(). Если я поставлю неопределенный цикл while (со сном) в конструкторе dylib, я не потерпите крах. Я получаю сбой, когда конструктор завершил выполнение.
Это их способ рассказать сборщику мусора, чтобы не попробовать и приостановить поток? Или увеличить количество ссылок на поток? или что-нибудь, что я могу сделать, чтобы остановить сборщик мусора, чтобы не мешать моему коду dylib.