Метка «crash»

Лечу Crash'и NSLog'ами. Недорого. Многолетний опыт. 100% гарантия.

Примерно таким заголовком можно было бы описать то, что три с половиной месяца назад происходило у меня на одном из проектов. Вернее, это даже был не мой проект, но с проблемой crash'а пришлось разбираться именно мне.

Все началось с того, что на одном из относительно больших проектов начало стабильно вываливаться исключение при авторизации пользователя. «Ну и что тут такого? У всех бывает. Проверку на nil забыли поставить или где-то накосячили. „Тоже, мне, большое событие — crash на проекте“, — подумает большая часть программистов. В принципе — абсолютно согласен. Crash — не такое уж и редкое явление в программировании под iPhone, и с ним сталкиваешься по десять раз на день. Но этот был особенным. От него уже начало попахивать „магией“, когда мне сказали про его некоторые параметры и особенности:

  • Воспроизводимость на симуляторе: 100%
  • Воспроизводимость на устройстве: 0%
  • Путь к крэшу (после локализации крэша): ~ 40 секунд
  • Настройки оптимизации при компиляции (-O1,-O2...) не влияют на воспроизводимость
  • XIB'ы в проекте не используются

Да выглядел он довольно безобидно:

// Code
UITextView * textView = [ [UITextView alloc] initWithFrame:CGRectMake(0, 150, _width, _height)];

// Exception
*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', 
    reason: 'CALayer bounds contains NaN: [0 0; nan 200]'

»Ну тут же и ежу понятно, что width — после вычисления — NaN!", — подумал я. Бегло поглядев где и как вычисляется ширина вьюхи, и не найдя ничего особого опасного, я, для утверждения своей догадки, поставил перед созданием вьюхи NSLog. А вдобавок, и точку останова на строке с созданием элемента.

// Source:
NSLog(@"width = %f", _width);

//Output:
width = 200

«Гм», — подумал про себя я, и продолжил выполнение программы после точки останова. И крэша не произошло…

Читать полностью »

Краш Samsung Galaxy S III:
Мы все здесь любим гаджеты, это понятно, но порой возникают ситуации, когда хочется их раскурочить, сплющить, взорвать… В общем куда-то выплеснуть свою агрессию. В связи с этим мы придумали формат Destruction show, в которых цинично, но красиво убиваем устройства. Вниманию хабрасообщества предлагается второй выпуск нашей youtube-программы, главным героем которого стал всем известный Samsung Galaxy S III.

Читать полностью »

Преамбула.

Настигло меня некоторое время назад горе. После посещения сайтов и страничек, с повышенной концентрацией флэш-контента, с жалобой на флэш-плагин, стал валиться Хром, внезапно, капитально и беспощадно. Перезапуск Хрома не спасал, требовался полный ребут системы.

Надо заметить, что Хром я люблю и пользую для динамического контента, вроде Ютуба и всего флэш- и js- содержащего (по совершенно очевидным причинам).

Лень-матушка убеждала не придавать этому значения. Но каждый ребут для меня — это целое событие, т.к. открыт десятки, если не сотни, вкладок, запущены десятки программ. Уж такой у меня образ жизни. Поэтому ребут — весьма нежелательное событие.

Настал тот миг, когда терпение моё лопнуло, и я решил разобраться с этой проблемой. Поставить в этой истории точку.

Решение, к слову сказать, оказалось довольно простым, и, одновременно, действенным. Читать полностью »

Пользователь Bron Gondwana на ServerFault отмечает, что начиная с утра 30-го июня некоторые его сервера на Debian Squeeze стали зависать, не подавая никаких признаков жизни.

С одного из серверов удалось вытащить вот такой дамп:

[3161000.864001] BUG: spinlock lockup on CPU#1, ntpd/3358
[3161000.864001] lock: ffff88083fc0d740, .magic: dead4ead, .owner: imapd/24737, .owner_cpu: 0

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js