About Blog PGP Key

All articles, tagged with “bugs”

xbindkeys: типа юниксвей

Когда-то, когда KDE 4.0 только релизился, я таки на него переполз. Из того что было нужно и не хотело работать — глобальные хоткеи.. Типа открыть терминал по Win+K и подобное. Вот в то время я пересел обратно на xbindkeys. Один раз написал простенький конфиг с десятком хоткеев.

Я конечно понимаю, что это юниксвей и все такое, но какого фига оно в powertop висит на втором месте из юзерспейса после firefox-а?

Top causes for wakeups:
  77.3% (486.5)   PS/2 keyboard/mouse/touchpad interrupt
   8.9% ( 56.1)   [kernel scheduler] Load balancing tick
   3.9% ( 24.5)   [iwlagn] <interrupt>
   2.9% ( 18.3)   firefox-bin
   1.6% ( 10.0)   xbindkeys
   1.5% (  9.3)   [i915@pci:0000:00:02.0] <interrupt>
   1.0% (  6.1)   Xorg

На выходных перелезу обратно на KDE-ные хоткеи.

Как я поднимал motofan.ru

Черт меня дернул сегодня посмотреть на http://forum.motofan.ru/ Зашел, а там вместо форума месседж:

SQL error: Table 'gtq_sessions' is read only

Имея туда шелл с root-овым доступом, решил заглянуть, че там случилось. Последний раз я туда лазил с пол года-год назад.

Первым делом решил глянуть error.log MySQL, и сразу же удивился что логи MySQL выключены вообще. Включил log-error и рестартанул. В логах ничего полезного не появилось.

На всякий случай с помощью mysqldump сделал дамп всей базы и начал ковыряться дальше. REPAIR TABLE gtq_sessions делать что-то полезное отказался, сославшись на все тот же “table is read only”.

Погуглив, проверил права на /var/lib/mysql. Кроме наличия “+x” у всех файлов, вроде все нормально. Попробовал запустить mysql от root. Не помогло. Погасил все что можно и запустил MySQL с —skip-grant-tables. Стало пускать root-а с любым паролем, но делать repair отказалось.

Погасил всё, запустил myisamchk по всем таблицам. Нашлась пара покоцаных таблиц, чего-то там починилось, но проблему не решило.

Хотел проапргейдить mysql, но увидел, что там еще etch, решил фигней не заниматься. Не зная, чего еще можно сделать полезного, глянул crontab в поисках бэкапилки. В какталоге с бэкапами увидел:

20100428
20100505

Зашел во второй (что посвежее) и начал его заливать. Подумав минут 5-10, оно навернулось. Глянуь файл дампа, а он недописан и обрывается прям на INSERT-е в какую-то таблицу. Глянул во второй, а там для нужной базы только стандартный хидер mysqldump-а.

Поняв, что с бэкапами грустно, начал думать, что делать раньше. Очень сильно повезло, что в силу паранои задампил все что было, как только залез. Решил пробовать заливать его, чтобы хотя бы вернуть все, как было. Но оказалось опять все грустно. mysql отказался заливать и это, сославшись на key violation-ы в кучке таблиц. С пол часа руками сравнивал и удалял повторяющиеся записи, потом забил и залил, запустив mysql с ключем -f. Тут же сделал analyze и repair всему. Для надежности дропнул всё нафиг и повторил процедуру еще раз. Потом проверил что во все таблицы попало хоть что-то.

Запустил обратно nginx, apache. Вроде работает. Второй дамп сливается, чтобы подиффать с предыдущим…

Про мораль буду думать позже ;)

hgsvn

Нужно было слить SVN-новскую репу Hudson с историей. Вот и поставил я это делать с помощью hgsvn. Работало оно больше недели, в итоге все 30K коммитов было слито.

После оказалось, что репозиторий нерабочий и склонировать его уже не выходит из-за того что в tip лежат файлы с именами, отличающимися только регистром букв.

Похду hgsvn умеет работать только на нормальных UNIX-like OS. А эпл с её “most advanced OS” идет лесом ;)

Да, тормозило это всё жестоко. Всю эту неделю из-за дискового I/O работать на маке было практически невозможно ;) Уныл весь этот эпл.

bugs

[23:54:07] <Disаbler> хз. они пилят утечку памяти, попутно всё ломают. мне пофиг на утечку — поэтому не обновляюсь.
[23:55:05] <Disаbler> так же как и пси+ не обновляю из-за багов.

Не про Psi, но знакомо… :)

ReiserFS

Только что впоймал на /home:

[100992.424959] REISERFS warning: reiserfs-5090 is_tree_node: node level 32768 does not match to the expected one 1
[100992.424971] REISERFS error (device dm-5): vs-5150 search_by_key: invalid format found in block 6750427. Fsck?
[100992.424978] REISERFS (device dm-5): Remounting filesystem read-only

Выше в логе ничего вроде ошибок чтения нету. Винт судя по SMART-у живой.

Ребутнулся, сделал fsck, тот только журнал навернул, но так и не нашел ничего. Странно как-то. Возможно связано с s2disk.

Мопедное

Давно я не пользовался USB-ным 3G модемом. Сегодня вот обнаружил, если выдергивать мопед при запушенном pppd, то девайс /dev/ttyACMx не удаляется. Аналогично при s2ram с поднятым pppd. Соответственно перевтыкивание модема создает новый ttyACM. При этом open() на старые говорит “No such device”, что вполне логично.

Раньше такого точно не было. Странно как-то.

Qt, MySQL

Понадобилась мне мелкая Qt-ная апликуха, которая бы умела выгребать данные из MySQL базы. Наступил на какие-то непонятные грабли.

Вот такой вот запрос работает:

SELECT COUNT(*) FROM table;

Возвращается 807 — количество записей. А вот такой запрос возвращает по какой-то причине всего 37 записей:

SELECT * FROM table;

Путем добавления всяких ORDERED BY и LIMIT/OFFSET удалось подобрать запись, на которой всё стопается. Вот такой вот запрос не возвращает ничего:

SELECT * FROM table WHERE id=1234

(Запись с id = 1234 существует). Дальше пришло в голову вот такое:

SELECT COUNT(*) FROM (SELECT * FROM table WHERE id=1234) as tbl;

Такой запрос вернул цифру “1”. То есть запись на самом деле есть.

Дальше я взял в руки GDB и начал дебажиться по libqt4-sql-mysql. За несколько проходов понять ничего не вышло. Потом я увидел следующий код ($QTDIR/sql/drivers/mysql/qsql_mysql.cpp, конец функции bool QMYSQLDriver::open()):

#if MYSQL_VERSION_ID >= 40108
    d->preparedQuerysEnabled = mysql_get_client_version() >= 40108
                        && mysql_get_server_version(d->mysql) >= 40100;
#else
    d->preparedQuerysEnabled = false;
#endif

Ну я, подумав что не зря для каких-то версий мускуля Prepared запросы отключали, вырубил их нафиг и пересобрал либу. После этого всё заработало.

Выглядит это всё очень странно. Command Line клиент пользуется обычными Query без Prepare/Execute.

PS. Qt 4.5.1.

Странное

Вот уже пол года, как я на ноуте прикрутил отображение текущего уровня громкости при его изменении клавишами Fn+F7/F8. Обычным osdsh.

Есть акустика с пультом ДУ. Так вот по непонятным причинам ноут реагирует, если медленно нажимать на некоторые клавиши пульта (например подержать кнопку уменьшения громкости нажатой в течение секунды). Какого-либо инфракрасного порта нету. acpi_listen ничего не видит, зато xev отображает следующее:

KeyPress event, serial 34, synthetic NO, window 0x4200001,
    root 0x5e, subw 0x0, time 92342799, (-4,774), root:(0,799),
    state 0x10, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes:                                    
    XmbLookupString gives 0 bytes:                                  
    XFilterEvent returns: False                                     

KeyRelease event, serial 34, synthetic NO, window 0x4200001,
    root 0x5e, subw 0x0, time 92342801, (-4,774), root:(0,799),
    state 0x10, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes:                                    
    XFilterEvent returns: False                                     

FocusOut event, serial 34, synthetic NO, window 0x4200001,
    mode NotifyGrab, detail NotifyAncestor                

FocusIn event, serial 34, synthetic NO, window 0x4200001,
    mode NotifyUngrab, detail NotifyAncestor             

KeymapNotify event, serial 34, synthetic NO, window 0x0,
    keys:  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
       0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeyPress event, serial 34, synthetic NO, window 0x4200001,
    root 0x5e, subw 0x0, time 92368930, (-4,774), root:(0,799),
    state 0x10, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes:                                    
    XmbLookupString gives 0 bytes:                                  
    XFilterEvent returns: False                                     

KeyRelease event, serial 34, synthetic NO, window 0x4200001,
    root 0x5e, subw 0x0, time 92368931, (-4,774), root:(0,799),
    state 0x10, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes:                                    
    XFilterEvent returns: False

Вот сижу, пытаюсь понять, что это за фигня. Кейкоды бывают разные.

Прогресс

Отныне пассажиры могут оплатить стоимость билета на поезд через интернет, сообщает пресс-служба Государственной администрации железнодорожного транспорта Украины (Укрзалізниця).

Покупать билет в интернете и потом топать за ним в кассу — это конечно круто.

Плюс эта хрень тормозит _так_, как будто у них вместо базы данных какой-то терабайтный текстовый файл, по которому они ищут grep-ом. Скопипастеный темплейт даже поленились полностью перевести. Как купить билет я пока тоже не нашел.

LiveFlash and btrfs (part 2)

Я короче говоря задолбался… Оно у меня таки типа заработало. Как минимум система с БТР’а грузится. Для этого пришлось чуть пропатчить скрипт из пакета initramfs-tools (багу в дебиановскую багзиллу повесил). Также пересобрал e2fsprogs с патчем для понимания btrfs. Правда udev вместо blkid использует какой-то другой велосипед для определения UUID, Label и типа FS. Соответственно монтирование по LABEL=… не работает.

fsck.btrfs сегфолтится постоянно. Закончилось все тем, что я обнаружил что update-grub начал вылетать с руганью, что не может найти где у меня /. Там походу третий велосипед.

Вернул все на reiserfs.