Home

Чудеса coreutils

  • 10 Апр, 2009 at 2:07 AM

[info]blinalexya рассказывал недавно, что на его работе ls падал в корку при обработке директорий с ~100'000'000 файлов. Не знаю, что за PohmelFS там использовалась, но учитывая тот факт, что ls сортирует имена файлов и пытается расставить их по нескольким колонкам — упасть, отожрав кучу памяти, оно действительно шансы имело.

Я же на днях наткнулся на другую смешную особенность коры утилит — seq работает с вещественными числами, а не с целыми, как может сложиться впечатление после сотни HOWTO, упоминающих код в духе $(seq 1 100). С целыми числами около нуля всё в порядке, но, если выйти за диапазон точности вещественного числа, начинают лезть артефакты, кстати, показывающие, что промежуточные вычисления делаются с точностью более высокой, чем double:

$ i=100000000000000000000; seq $i $(echo $i + 10 | bc) | uniq -c
5 100000000000000000000
7 100000000000000000008
$ i=1000000000000000000000; seq $i $(echo $i + 10 | bc) | uniq -c
33 1000000000000000000000

Уронить seq в core таким образом не получается, но загнать в бесконечный цикл — легко.

Да, и еще к вопросу о точности. [info]gasadov давненько провел чудный эксперимент и закодировал фотографию в mp3. Что я могу сказать — даже в 320kbps преобладает теплый ламповыйцветной электронойз.

Похоже, проведение своеобразного shutdown week в конце марта становится (не?)доброй традицией. На этот раз у меня отключился jabber (из-за DDoS на хостера), пару раз за неделю ломался доступ по RSA-ключам к тестовому серверу (до сих пор не работает), подглючивал смартфон, традиционно падал webstream и в довершение картины — заело часы на IBM ThinkPad.

Как выглядят заевшие часы на ноутбуке с Linux? Элементарно — вся временная ось сжимается в кольцо из пяти секунд и процесс обновления зависает примерно на такой стадии:
build environment is sane...

При этом еще наблюдается ряд не менее забавных артефактов. Например, time() всегда возвращает одну и ту же секунду с начала Эпохи UNIX, не смотря на то, что clock_gettime() и gettimeofday() возвращают целых 5 различных вариантов секунд.

К тому же после попытки сделать nanosleep() процесс от сна уже не пробуждается даже если в параметрах было всего 0 наносекунд, то же самое верно и для poll() с ненулевым таймаутом. Видимо, по этой же причине SysRq+S (он же emergency sync) никогда не завершается и, соответственно, данные из этих «вечных» пяти секунд на диск не записываются.

OpenNTPd, кстати, тоже отвисает где-то глубоко в ядре, судя по показаниям strace. При том работает «варварский» метод синхронизации времени...

$ sudo date --utc $(ssh remote-host "date --utc +%m%d%H%M%Y.%S")
выставляя начало пятисекундного кольца в актуальное положение.

Вообщем, судя по многолетним наблюдениям, весенняя shutdown week длится со дня весеннего равноденствия до перевода часов на летнее время. Т.е. она как раз предшествует неделе математики и постепенно перетекает обратно в shutdown day, который проходит 2го мая.

P.S.

$ uname -snrv
Linux thinkpad 2.6.27-gentoo-r8 #2 PREEMPT Mon Mar 16 09:34:47 OMST 2009

Карма тестера

  • 7 Янв, 2009 at 10:42 PM

Когда очередной сервис или кусок софта начинает глючить у меня в руках, я нередко люблю повторять, что у меня «карма тестера» или что «я не совместим с Windows», если программа выпущена Mircosoft. Так вот, сегодня в очередной раз случился приступ Силы.

Точнее, началось всё еще вчера вечером, когда я подошел к серверу, который обеспечивает меня и соседей bluetooth-интернетом и музыкой, и через несколько секунд звук интернет-радио начал заикаться так, словно у сервера случился kernel panic. Правда, заметив нерегулярность мигания лампочки на BT-адаптере, я ssh-нулся на сервер, перезапустил плеер (mocp-2.5.0-alpha3) и продолжил пить чай, стоя у окна.

Но всё это было бы не так забавно, если бы не сегодняшний случай. Примерно в то же время вечера, я опять подошел к серверу, игравшему ту же радиостанцию (кстати, у Нашего радио сейчас чудесный новогодний эфир для ностальгической медитации), опять с кружкой чая... И плеер опять завис. Таким образом, баг воспроизвёлся и, соответственно, его стоило бы задокументировать... К счастью, mocp то ли не обзавёлся публичной багзиллой, то ли тщательно её скрывает — но этого нелепого рождественского багрепорта им не видать.

Tags:

XEP-ов мета-баг

  • 1 Авг, 2008 at 1:30 AM
Сегодня, т.е. вчера, я нашел свой первый мета-баг, т.е. баг порождающий другие баги в других системах.
Если раньше все найденные баги сводились либо к более или менее очевидным проблемам и/или к несоответствию софта спецификациям, то сегодня я нашел ошибку в спецификации jabber-а, а точнее в его расширении, определяющем многопользовательские чаты.

Бага в описании работы с темой канала. Ошибка простая: никто однозначно не определяет, как тему конференции удалить, поэтому ejabberd/mod_muc с gajim-ом и ткаббером пошли одним путем, а Miranda, QIP Infinum, Psi и бомбус - другим.
Первые на стазну <message ...><subject/></message> тему удаляют, а вторые эту станзу игнорируют.

Интересно, как после удаления неоднозначности из XEP-а отреагируют разработчики квипа на багрепорт...

Тем временем Psi становится весьма популярным jabber-клиентом в России. Судя по отчету админа, наибольшая часть трафика приходит из РФ (трафик из .com и .net не учитывался, т.к. он географически не привязан по TLD).


UPD: Баг в спецификации исправлен: соответствующий пример добавлен.

Tags:

bison-httpd ?

  • 28 Фев, 2008 at 7:33 PM
Встретил занятную статью про использование парсеров для сетевых протоколов.
Did you know that the following is valid HTTP?:
GET / HTTP/1.1
Host:
  www.webserver.com

Проверил ­— апач, гуглевский gws на google.com, сысоевский nginx на rambler.ru знают, яндексевский lighttpd говорит на подобное 400 Bad Request, а джаноговский testserver вообще умирает с исключением. :)

Tags:

В очередной раз я обнаружил забавный баг тандема icq и qip, на этот раз в форме довольно забавной строчки в контакт-листе, которую я обнаружил в рамках недели работы в стиле [info]telegamochka (единственным рабочим инструментом в течении этой недели был смартфон Nokia E61).
Так вот, еще в прошлом году я опечатался и добавил запись в контакт-лист icq вместо msn... набрал account add 1 вместо account add 3.
И вот последствия – qip в контакт-листе показывает человека из msn и падает при попытке просмотра его профиля.
MSN buddy in ICQ contact-list
Вот такой чудный UIN. blablabla@hotmail.com

Из этого очевидным образом следует неиллюзорная необходимость наличия открытой спецификации протоколов обмена сообщениями и... :)

Tags:

assert(scp != sftp && scp == shell)

  • 16 Дек, 2007 at 6:54 PM
И все в scp хорошо, но только он вызывает удаленный шелл, а не работает через sftp, что является как плюсом, так и минусом.
А следовательно — ...

... надо эскейпить мета-символы оболочки.
Т.е. в понятную и простую, но не работающую команду
scp -r storage:"/storage/data/Music/Billy's band/2007 - Весенние обострения" .
следует накрутить бэкслеший до состояния
scp -r storage:"/storage/data/Music/Billy\'s\ band/2007\ -\ Весенние\ обострения" .

... нет смысла давать пользователям scp без шелла, т.к. они сделают просто
scp server:"/dev/null; screen -dmS session_name /bin/foobar" .
И я не исключаю возможность сделать это даже без screen, но по логике вещей (которую я не проверял) при освобождении tty всем, запущеннытм таким образом, прилетит SIGHUP и любое разумное приложение помрет.

То же самое справедливо и для rsync, если он работает через "remote shell"

Tags:

наблюдения за день

  • 15 Дек, 2007 at 8:36 PM

Люди

Во время утренней пробежки по советскому парку увидал чудесное. Мужчина лет тридцати на каком-то ниссане проезжает по чему-то среднему между проезжей частью и тротуаром, останавливается, выходит... Достает из багажника санки и идет кататься на горку.

Perl

Раз в год и кажущийся абсурдным assert стреляет.
my $foo = "a+b";
die if ($foo !~ /$foo/);

Решение:
die if ($foo !~ /\Q$foo\E/);

bash.org.ru

В час дня отвалился ssh до одной из машин из-за того, что бесперебойник устал тянуть ADSL-модем после отключения питания.
За 20 минут до того, как села батарейка на башорге подтвердили цитату
WinnorOkOmo: самый страшный звук в серверной - тишина...
Великолепный баг показал мне товарищ [info]dev_hands, с которым мы поспорили, кто на скачках придет раньше – "наши" или "его", и попались на противоречие, что по процентам выше СПС, а по голосам – Гражданская Сила...
Зайдем на сайт ЦИК РФ и изучим данные О текущих итогах голосования на 02.00 по московскому времени.
и обнаружим, что система криво вычисляет проценты )

Profile

firefox
[info]darkk
Leonid Evdokimov
Website

Реклама

Syndicate

RSS Atom
Разработано LiveJournal.com
Designed by Tiffany Chow