About Blog PGP Key

All articles, tagged with “bugs”

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.

Автоматический перевод часов

У моей мобилки какие-то трудности с переводом часов назад. Сегодня утром я проснулся, на экране 02:37 (время было выставлено правльное) и куча (где-то 8 штук) диалоговых окошек вида “already auto adjust DST“. Будильник, выставленный на 9 утра, естественно, не сработал. Позакрывал их кнопкой “Ok”. Правильное время не выставлял.

Несколько позже время на часах мобилки подошло к 03:00, опять автоматом перевелось на 02:00 и вылезло аналогичное окошко… Я так понимаю, что теперь, если часы не трогать, они будут работать в диапазоне 02:00 — 03:00.

Скрин: [caption id=”attachment_500” align=”aligncenter” width=”240” caption=”already auto adjust DST”]already auto adjust DST[/caption]

Qt4 Model/View

Целый день провозился с Qt-ным MVC. Пытался наследовать QAbstractItemModel и нотифаить View про добавление/удаление узлов в дереве. Наловил кучу сегфолтов в момент удаления узлов.

Постепенно уменьшал количество кода. Свелось все к тому, что QTreeView-у становится плохо, если в модель вставляется узел в _первую_ строку…

Дебажил, дебажил.. В итоге вылечилось все с помощью aptitude dist-upgrade. Qt4 обновился с 4.4.0 на 4.4.3.

PS. В Qt labs есть интересный класс, который позволяет находить многи ошибки в реализации моделей.

Странная загрузка CPU в top

Чего-то у меня с 2.6.27-rc5 какие-то странные вещи в top-е стали показываться…

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
25799 dion      20   0 29016  11m 9696 S  713  0.6  13:48.34 kpowersave
25925 dion      20   0 78564  27m  14m S  426  1.4  11:43.79 assistant-qt4
 5429 root      20   0  4828 1736 1428 S  395  0.1   2:02.39 powersaved

Или вот так:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 8430 dion      20   0 57544 4940 2836 S  218  0.2  16:33.68 xmms2d
25841 dion      20   0  122m  68m  18m S  140  3.4 148:30.88 konsole
25746 dion      20   0 64064  20m  14m S  133  1.0  99:58.73 kwin

Если потыцкать Enter, то %CPU иногда и четырехзначным бывает. При чем у нескольких процессов сразу.

Кроме как особенностей рабочего CONFIG_NO_HZ идей у меня нет… В powertop-е этих процессов не видно…