Символизация - это процесс перевода адресов в символы (функции, методы и т. Д.). Без журнала сбоев, который содержит эти адреса, символика не имеет смысла. Вы не можете переводить адреса, которых у вас нет. Но откуда появился вывод, который вы перечислили? Похоже, это может быть частью большего журнала. Вы отметили проблему Crashlytics - этот отчет пришел из их службы?
В журнале вы включили некоторую полезную информацию. Хорошая новость в том, что она говорит вам, что у вас куча коррупции. malloc
назвал abort
, потому что он обнаружил несоответствие с его внутренними структурами. Кроме того, крайне маловероятно, что символическая трассировка стека поможет вам, потому что повреждение кучи редко, если вообще когда-либо, вызывается функциями, расположенными дальше по стеку.
Имейте в виду, что авария, которую вы видите здесь, является эффектом . Чтобы устранить эту проблему, вам нужна причина , и трассировка стека не даст вам этого в этой ситуации.
Есть еще плохие новости. Трудно, и часто даже невозможно, рассуждать о кучной коррупции. Воспроизведение ошибки также может быть невозможным, поскольку повреждение памяти обычно не является детерминированным. Как вы заметили, сбой выглядит случайным. Это потому, что это, вероятно, так.
То, что я бы порекомендовал сделать здесь, - это использовать различные инструменты, предоставляемые Apple, для отладки такого рода проблем.
Zombies
в инструментах чрезвычайно очень часто бывает, что одна ошибка, приводящая к повреждению кучи, вызывает множество различных видов сбоев. Это может быть чрезмерным выпуском objc, поэтому я также следил за исключениями selectorNotRecognized. Эти сбои могут дать вам больше подсказок о том, какой тип объекта переиздан.
Удачи!
Это будет работать:
earliest = Model.first(:order => 'column asc')
—Где Модель - это название класса вашей модели и column - это имя столбца даты и времени. Он сгенерирует этот оператор SQL:
SELECT * FROM `Model` ORDER BY column asc LIMIT 1
Я не уверен насчет RoR, но в SQL вы можете просто отсортировать результаты запроса по полю datetime и ограничить количество результатов до 1.
SQL:
SELECT field1,field2,... FROM table ORDER BY datefield LIMIT 1;
Или может быть в Ruby (не уверен):
table.find(:all, :limit => 1, :order => 'datefield.asc')