Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Строчка кода, убивающая IE6 :)

Браузеры
Японский блогер Hamachiya2 «придумал» короткую строчку HTML кода, которая некорректно понимается IE6 и он выдает критическую ошибку :-)
<style>*{position:relative}</style><table><input></table>

Не верите? Проверьте! В остальных браузерах все хорошо.

Источник — immike.net

Обновлено: Чтобы крушить IE7 нужно просто добавить доктайп :) О, великие борцы со стандартами!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" «www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd»>
<style>*{position:relative}</style><table><input></table>
Читать дальше →
Всего голосов 63: ↑59 и ↓4 +55
Просмотры 232
Комментарии 97

Crash dump'ы и KeCapturePersistentThreadState

Системное программирование *
Я тут обнаружил очень занятную недокументированную функцию, экспортируемую ядром, на которую нет ссылок внутри ядра, но которая делает весьма занятную вещь. А именно, записывает в переданный кусок памяти полноценный minidump на данный момент времени.
Весьма полезно с учетом того, что там (в дампе) есть оффсеты неэкспортируемых структур типа PsLoadedModuleList, которые могут пригодиться.
Спасибо Freeman за помощь)

ULONG
NTAPI
KeCapturePersistentThreadState(
PCONTEXT Context,
PKTHREAD Thread,
ULONG BugCheckCode,
ULONG BugCheckParameter1,
ULONG BugCheckParameter2,
ULONG BugCheckParameter3,
ULONG BugCheckParameter4,
PVOID VirtualAddress
);


Входные параметры:
Context — текущий контекст (можно от балды, нужно лишь заполнить EIP & ESP)
Thread — текущий поток. можно указать NULL, тогда она сама возьмет текущий
BugCheckCode, ParametersX — багчек код и аргументы, которые она запишет в дамп.
VirtualAddress — адрес выделенных 16 страниц памяти (64кб), куда она положит аккуратно готовенький крешдамп.

Пример:

Заголовок дампа:
typedef struct _DUMP_HEADER {
/* 00 */ ULONG Signature;
/* 04 */ ULONG ValidDump;
/* 08 */ ULONG MajorVersion;
/* 0c */ ULONG MinorVersion;
/* 10 */ ULONG DirectoryTableBase;
/* 14 */ PULONG PfnDataBase;
/* 18 */ PLIST_ENTRY PsLoadedModuleList;
/* 1c */ PLIST_ENTRY PsActiveProcessHead;
/* 20 */ ULONG MachineImageType;
/* 24 */ ULONG NumberProcessors;
/* 28 */ ULONG BugCheckCode;
/* 2c */ ULONG BugCheckParameter1;
/* 30 */ ULONG BugCheckParameter2;
/* 34 */ ULONG BugCheckParameter3;
/* 38 */ ULONG BugCheckParameter4;
/* 3c */ CHAR VersionUser[32];
/* 5c */ UCHAR PaeEnabled;
UCHAR NotUsed[3];
/* 60 */ PVOID KdDebuggerDataBlock;
} DUMP_HEADER, *PDUMP_HEADER;


Использование функции: www.everfall.com/paste/id.php?mkgmkfg1a057

Кодес получает дамп, показывает адерса MmPfnDatabase, PsActiveProcessHead, PsLoadedModuleList и сбрасывает дамп на диск. Дамп можно спокойно запихать в WinDbg и изучать

Вообщем, весьма занятная штуковина…

Надо будет переписать свой gr8lkd (http://gr8lkd.googlecode.com/) с использованием этой функции.
Всего голосов 17: ↑11 и ↓6 +5
Просмотры 1.6K
Комментарии 3

Способ вызвать краш браузера Safari

Safari
Занимаясь экспериментами с HTML и CSS, нашёл способ удалённо закрыть у пользователя браузер Safari.

Простое открытие страницы со следующим кодом просто крашит браузер, при чём как в ОС Windows XP SP2, так и в MacOS X Leopard 10.5.5.

<style>
wbr { position: absolute; }
</style>

<wbr />

Баг проявляет себя на последней версии Safari (3.2.1) и в предыдущих (как минимум, 3.1.2).

Посмотреть на практике можно здесь: grinchik.ru/side/crash-safari.html
Всего голосов 122: ↑112 и ↓10 +102
Просмотры 3.3K
Комментарии 91

Исходный код → Crash!

Чулан
Вчера по нажатии в Firefox 3.0.9 на «Просмотр исходного кода» FF падал с ужасным скрипом. Это меня поразило очень сильно. Первое что я подумал: Mozilla где-то допустила баг.

Но сегодня с утра при запуске FF выскачило окошко обновления Add-on'ов и предложило обновить HTML Validator, что я и сделал.

О, чудо! FF больше не вылетает при просмотре HTML!

Выяснилось, что виноват был именно этот add-on. Вот перевод заявления автора add-on'а с официального сайта (стиль повествования максимально сохранен):

Предыдущие версии вызывали баг в FIREFOX 3.0.9 в DOM API!
Настоящее решение было бы Firefox 3.0.10 но он не будет доступен еще 1 месяц. Практически, при просмотре исходного кода в Firefox 3.0.9 он падает! Некоторые строки кода которые работали начиная с Firefox 1.0 теперь вызывают падение Firefox'а...
Из-за этого, я вынужден выпустить очень быстрый 0.856 чтобы решить Firefox 3.0.9 баг Так что, подсветка строк с HTML ошибками теперь отключена! К несчастью, у меня не было лучшего решения.
— Работает в Firefox 3.1 beta 3.
— Работает в Seamonkey 2 alpha 3
Всего голосов 13: ↑9 и ↓4 +5
Просмотры 154
Комментарии 2

Исходный код → NO Crash!

Чулан
Сегодня история с крушением FF при просмотре исходного кода получила продолжение. Mozilla Foundation выпустили Firefox 3.0.10. Он конечно же сам обновился и вот что я прочитал в примечаниях к релизу:

Название: Крушение в nsTextFrame::ClearTextRun()
Значение: Критическое
Заявлено: 27 апреля, 2009
Сообщил: Marc Gueury, Daniel Veditz
Продукты: Firefox

Починили в: Firefox 3.0.10

Описание

Одно из исправлений в безопасности в Firefox 3.0.9 производило регрессию, которая приводила к частым крушениям у некоторых пользователей. Были сильно затронуты пользователи add-on'а HTML Validator, но и другие пользователи также испытывали это крушение в некоторых ситуациях. Анализируя это крушение мы обнаружили, что оно вызывалось из-за искажения памяти похожего на случаи уязвимости в безопасности отмеченные ранее.

Дополнительные ссылки
UPD: Для тех кто не использует HTML Validator обновление не представляет ценности, но для верстальщиков оно крайне удобно. Кроме этого с выходом 3.0.10 появляется вероятность того, что автор HTML Validator обратно включит подсветку ошибок в исходном коде.
Всего голосов 9: ↑5 и ↓4 +1
Просмотры 165
Комментарии 2

Mozilla Crash Report по два раза за час. Достало!

Firefox
image
Надеол глючный FF. На всех компах, куда ставил 3-й FF, везде он постоянно падает… с плагинами или без, не имеет значения. Перешел пока на Chrome, хотя и тот падает, но в 3 раза реже. Когда был 2-й лис, все работало (хоть 50 закладок) нормально. Куда катиться мир?! Или я один такой?!
Всего голосов 135: ↑27 и ↓108 -81
Просмотры 6.8K
Комментарии 79

Введение в postmortem debugging

Разработка веб-сайтов *
Падение программы — это очень гадкая вещь. К сожалению все мы не идеальны и даже применяя наиболее безопасные методы разработки (например TDD) мы не застрахованы от того что программа свалится. Особенно плохо, если она свалится уже у заказчика. Но на пути к идеалу у нас всегда есть инструментарий, который может помочь расследовать падение программ, выявить ошибки, а главное исправить их.
Одно грустно, что многие, даже очень опытные разработчики не знакомы с этим инструментарием и многие компании не включают данную практику в свою работу. Я говорю о postmortem отладке.
В данной статье я хочу показать азы работы с данным зверем и возможно подтолкну этим самым разработчиков на расширение своих познаний в области оладки. Итак, приглашаются к чтению C++ Windows разработчики, тим-лиды, ну и руководителям отделов разработки будет неплохо ознакомиться.
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Просмотры 13K
Комментарии 18

JVM падает (2 истории про вызов native library)

Java *
Хочу поделиться двумя историями с одинаковым сюжетом, но разными развязками.
Может быть кому то, у кого тоже падает JVM будет полезно

1. Native code вызывается из Явы через JNI. Юнит тест — проходит на ура, приложение (GUI, Swing) крэшится.
Подключаемся через дебагер ddd (это такая оболочка над gdb, ежели кто из яваистов не знает :) ) — видим что падает с длинющим стеком. Выясняем с автором нативной библиотеки, что там они десериализуют через boost (такая библиотека для C++) дерево большой глибины. И там рекурсия.

Возникает идея (не сразу, 3 дня споров и гугления), что при вызове из приложения стек больше и он переполняется. Находим параметер для JVM: -XX:ThreadStackSize=

Работает!

2. Native code вызывается через JNA. Присутствую колбеки обратно в Явы, так как я описывал. Юнит тест бежит, приложение падает!

Читать дальше →
Всего голосов 33: ↑25 и ↓8 +17
Просмотры 2K
Комментарии 21

Повторные проблемы с доступностью к Google из России

IT-компании
Недоступны публичные DNS, серверы gmail, часть CDN-сетей.

Веб-сервисы google сейчас работают.

В нашу службу техподдержки поступает много жалоб о проблемах с доступностью разных сайтов.

>ping -t 8.8.8.8

Обмен пакетами с 8.8.8.8 по с 32 байтами данных:
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Ответ от 8.8.8.8: число байт=32 время=123мс TTL=38
Превышен интервал ожидания для запроса.

Трафик на MSK-IX / SPB-IX аналогично падает.




Спад трафика на магистралях в Москве уже достиг 10%, а в Питере около 20% общего трафика.

Напомню, что в прошлый четверг были проблемы с аналогичными симптомами, про которые google сообщил «Причина сбоя — проблемы с оптоволоконной сетью в России».

Официальной информации пока нет. Следим за событиями.

upd Видно, что google перестраивает маршруты

upd отrouter: На прошлой неделе при проблемах у Google, были аварии на сети RETN. Сейчас тоже авария на их же сети с 14:42. У меня подозрение, что Google использует транспортную сеть RETN до России.

upd 15:39 На текущий момент все сервисы google доступны. В этот раз время перебоя составило около часа.

Источник cadmus.ru/practice/Google_snova_nedostupen
Всего голосов 33: ↑25 и ↓8 +17
Просмотры 907
Комментарии 40

Leap second привёл к зависанию некоторых серверов на Linux

Настройка Linux *
Пользователь 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

Читать дальше →
Всего голосов 73: ↑67 и ↓6 +61
Просмотры 15K
Комментарии 74

Постоянно отваливается Flash Plugin в Google Chrome? Есть решение!

Разработка под Windows *
Преамбула.

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

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

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

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

Решение, к слову сказать, оказалось довольно простым, и, одновременно, действенным.
Хочу решение!
Всего голосов 59: ↑44 и ↓15 +29
Просмотры 333K
Комментарии 36

Краш Samsung Galaxy S III:

Блог компании Nomobile.Ru

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

Читать дальше →
Всего голосов 57: ↑14 и ↓43 -29
Просмотры 6.8K
Комментарии 23

История одного Crash-а, и NSLog'а его лечившего

Программирование *Разработка под iOS *Objective C *
Лечу 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


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

Что было дальше? Читайте во второй части сразу под катом...
Всего голосов 162: ↑157 и ↓5 +152
Просмотры 29K
Комментарии 50

iPhone 5S обзавелся «синим экраном смерти»

Смартфоны IT-компании
Перевод
image

Новый iPhone 5S от Apple порадовал пользователей неожиданной фичей: BSOD-ом, или «синим экраном смерти». BSOD является типичным сообщением об ошибке старых версий ОС Windows, но многие пользователи iPhone 5S сообщают о неожиданных перезагрузках своих устройств после BSOD-а. Синий экран появляется в первую очередь из-за родных приложений Apple iWork. На видео видно, что перезагрузки вызваны переключением между приложениями, но пользователи так же сообщают и о перезагрузках во время работы.
Читать дальше →
Всего голосов 61: ↑42 и ↓19 +23
Просмотры 63K
Комментарии 36

Повреждение стека в одном из методов NSString

Разработка под iOS *Objective C *
Из песочницы
Хочу написать про один странный креш, с которым разбирался на работе.

Креш происходил стабильно при заходе в папку с корейскими символами. Проблема оказалась во вроде бы безобидном коде следующего вида:

NSURLComponents* urlComp = [[NSURLComponents new] autorelease];
...
urlComp.path = path;
urlComp.user = username;
...

Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 6.3K
Комментарии 10

Убийственная связка из NSCache и UINib

Разработка под iOS *Objective C *
Хочу поделиться еще одним крешем, с которым разбирался пару месяцев назад. Сейчас, по прошествии времени, крешрепорты такого типа больше не наблюдаются в HockeyApp, а раньше были одними из самых популярных. Собственно, проблема наблюдалась уже довольно давно, но тогда наше приложение еще использовало TestFlight и информации для анализа не доставало. Креш характеризовался примерно таким стеком:

Thread 0 Crashed:
0   libobjc.A.dylib                      0x39abcf42 objc_msgSend + 2
1   CoreFoundation                       0x2bfe0c61 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 10
2   CoreFoundation                       0x2bf3c6d5 _CFXNotificationPost + 1782
3   Foundation                           0x2cc6e129 -[NSNotificationCenter postNotificationName:object:userInfo:] + 70
4   Foundation                           0x2cc72c8f -[NSNotificationCenter postNotificationName:object:] + 28
5   UIKit                                0x2f750883 -[UIApplication _performMemoryWarning] + 132
6   libdispatch.dylib                    0x3a0107a7 _dispatch_client_callout + 20
7   libdispatch.dylib                    0x3a021253 _dispatch_source_latch_and_call + 624
8   libdispatch.dylib                    0x3a0122ed _dispatch_source_invoke + 210
9   libdispatch.dylib                    0x3a013e1f _dispatch_main_queue_callback_4CF + 328
10  CoreFoundation                       0x2bfee3b1 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 6
11  CoreFoundation                       0x2bfecab1 __CFRunLoopRun + 1510
12  CoreFoundation                       0x2bf3a3c1 CFRunLoopRunSpecific + 474
13  CoreFoundation                       0x2bf3a1d3 CFRunLoopRunInMode + 104
14  GraphicsServices                     0x332cf0a9 GSEventRunModal + 134
15  UIKit                                0x2f5487b1 UIApplicationMain + 1438
16  xxx                                  0x0015bb81 main (main.m:18)
17  libdyld.dylib                        0x3a030aaf start + 0
Читать дальше →
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 6.6K
Комментарии 6

Почему айфон перезагружается от арабской смс

Ненормальное программирование *Разработка под iOS *Разработка под Android *Objective C *C *
DISCLAIMER

Не пытайтесь повторить это со своими телефонами и телефонами коллег! Судя по комментариям, много людей уже заразили свои телефоны, а 100%-тного лекарства еще нет!

DISCLAIMER 2

Даже не пытайтесь назвать так Wi-fi точку!

Около 15 часов назад на Reddit появился забавный пост, который рассказывал о перезагрузке айфона после странного сообщения вида:
Не шлите никому на айфон
Power
لُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ



Читать дальше →
Всего голосов 184: ↑178 и ↓6 +172
Просмотры 232K
Комментарии 138

Linux все еще не торт

Блог компании Virtuozzo Open source *Тестирование IT-систем *Системное программирование *Разработка под Linux *
Эта история началась около месяца назад, когда Кирилл Тхай добавил поддержку вложенных пространств имен в CRIU, после чего наша система CI приказала долго жить. В тот момент ничто не предвещало тех увлекательных приключений, в которые мы оказались вовлечены.

image
Читать дальше →
Всего голосов 101: ↑94 и ↓7 +87
Просмотры 42K
Комментарии 44
1