bugs
[23:54:07] <Disаbler> хз. они пилят утечку памяти, попутно всё ломают. мне пофиг на утечку — поэтому не обновляюсь. [23:55:05] <Disаbler> так же как и пси+ не обновляю из-за багов.
Не про Psi, но знакомо… :)
[23:54:07] <Disаbler> хз. они пилят утечку памяти, попутно всё ломают. мне пофиг на утечку — поэтому не обновляюсь. [23:55:05] <Disаbler> так же как и пси+ не обновляю из-за багов.
Не про Psi, но знакомо… :)
Только что впоймал на /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 базы. Наступил на какие-то непонятные грабли.
Вот такой вот запрос работает:
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-ом. Скопипастеный темплейт даже поленились полностью перевести. Как купить билет я пока тоже не нашел.
Я короче говоря задолбался… Оно у меня таки типа заработало. Как минимум система с БТР’а грузится. Для этого пришлось чуть пропатчить скрипт из пакета 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”]
[/caption]
Целый день провозился с Qt-ным MVC. Пытался наследовать QAbstractItemModel и нотифаить View про добавление/удаление узлов в дереве. Наловил кучу сегфолтов в момент удаления узлов.
Постепенно уменьшал количество кода. Свелось все к тому, что QTreeView-у становится плохо, если в модель вставляется узел в _первую_ строку…
Дебажил, дебажил.. В итоге вылечилось все с помощью aptitude dist-upgrade. Qt4 обновился с 4.4.0 на 4.4.3.
PS. В Qt labs есть интересный класс, который позволяет находить многи ошибки в реализации моделей.
Чего-то у меня с 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-е этих процессов не видно…