Bug 21045

Summary: kbuildsycoca неумеренно потребляет процессор и память при запуске в среде GNOME
Product: Sisyphus Reporter: Anton V. Boyarshinov <boyarsh>
Component: gnome-menusAssignee: Yuri N. Sedunov <aris>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: critical    
Priority: P3 CC: aen, anubix, aris, cas, lav, msp, shrek, viy, zerg
Version: unstableKeywords: distro-blocker
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 19564    

Description Anton V. Boyarshinov 2009-08-12 15:24:16 MSD
kbuildsycoca неумеренно потребляет процессор и память при запуске в среде GNOME
Comment 1 AEN 2009-08-12 16:39:41 MSD
http://usalug.org/phpBB2/viewtopic.php?t=14163&sid=619579b1dbf59bac5d7fb04f432f1e9c

Похоже, она один раз так делает.
Comment 2 AEN 2009-08-12 16:48:55 MSD
(В ответ на комментарий №1)
> http://usalug.org/phpBB2/viewtopic.php?t=14163&sid=619579b1dbf59bac5d7fb04f432f1e9c
> 
> Похоже, она один раз так делает.

Нет. Циклит. И именно на Gnome
Comment 3 Sergey V Turchin 2009-08-12 19:20:20 MSD
Как воспроизвести?
Comment 4 AEN 2009-08-12 19:26:04 MSD
(В ответ на комментарий №3)
> Как воспроизвести?

В среде Gnome запустить kturtle и наблюдать за top
Comment 5 Sergey V Turchin 2009-08-12 19:49:36 MSD
с gnome-овским меню что-то накосячили
все работает, если
unset XDG_MENU_PREFIX
Comment 6 Sergey V Turchin 2009-08-12 19:50:01 MSD
*** Bug 21046 has been marked as a duplicate of this bug. ***
Comment 7 Sergey V Turchin 2009-08-12 20:11:58 MSD
В нем не должно быть строки
<MergeFile>applications.menu</MergeFile>

Скопируйте себе в gnome-applications.menu содержимое applications.menu, если оно нужно
Comment 8 AEN 2009-08-12 21:01:25 MSD
Сергей, спасибо!
Comment 9 Alexey Rusakov 2009-08-13 00:08:08 MSD
Досадно :( А почему так происходит, можно пояснить?
Comment 10 AEN 2009-08-13 00:13:49 MSD
(В ответ на комментарий №7)
> В нем не должно быть строки
> <MergeFile>applications.menu</MergeFile>
> 

Не должно быть такого тега вообще или он несовместим с установленным XDG_MENU_PREFIX?
Или бага во включаемом файле, вызывающая зацикливание при интерпретации?
Comment 11 Zerg 2009-08-13 00:25:14 MSD
(В ответ на комментарий №10)
> Не должно быть такого тега вообще или он несовместим с установленным
Не должно быть включения applications.menu в gnome-applications.menu
Это равно включению applications.menu в applications.menu, т.е. зацикливание
Comment 12 Alexey Rusakov 2009-08-13 00:27:45 MSD
Можно ссылку на источник? (можно RTFS)
Comment 13 Zerg 2009-08-13 02:36:25 MSD
http://standards.freedesktop.org/menu-spec/1.0/ar01s02.html
Я не знаю. Для меня очевидно, что это ИЛИ, а не И
Comment 14 Zerg 2009-08-14 23:56:01 MSD
Возможно, изврат сработает. Не проверял
ln -s applications.menu gnome-applications-common.menu
<MergeFile>gnome-applications-common.menu</MergeFile>
Comment 15 Alexey Rusakov 2009-08-15 15:21:36 MSD
Не вижу там ни ИЛИ, ни И. Насколько я вижу, спецификация данный момент не проясняет. Пока сделаю через симлинк, посмотрю что получится.
Comment 16 Alexey Rusakov 2009-08-16 03:01:08 MSD
Через симлинк работает. Забрасываю в Сизиф.
Comment 17 AEN 2009-08-16 03:05:02 MSD
(В ответ на комментарий №16)
> Через симлинк работает. Забрасываю в Сизиф.

Спасибо! 
Закрывайте ее.
Comment 18 Zerg 2009-08-16 15:41:02 MSD
(В ответ на комментарий №15)
> Не вижу там ни ИЛИ, ни И
XDG_MENU_PREFIX="any-" && echo /etc/menus/${XDG_MENU_PREFIX}applications.menu
Сможешь получить /etc/menus/gnome-applications.menu _И_ /etc/menus/applications.menu на выходе при любом значении XDG_MENU_PREFIX?

_ИЛИ_ -- запросто
Comment 19 Alexey Rusakov 2009-08-16 18:55:08 MSD
Не понимаю вопроса. В спецификации нигде не сказано, что ${XDG_MENU_PREFIX}applications.menu не может включать applications.menu. В спецификации говорится о точке входа, и она там описывается вполне однозначно: это ${XDG_MENU_PREFIX}applications.menu. В частном случае, когда графическая среда не выставляет XDG_MENU_PREFIX, это applications.menu. О допустимости включения файлов друг в друга я там не вижу ничего.
Comment 20 AEN 2009-08-19 03:43:48 MSD
Прошу подтвердить исправление.
Comment 21 Alexey Rusakov 2009-08-19 14:12:44 MSD
Не подтверждаю. Фокус с симлинком не прошёл.
Comment 22 Andrey Cherepanov 2009-08-20 17:50:00 MSD
(В ответ на комментарий №20)
> Прошу подтвердить исправление.
Исправлено в дистрибутивах на базе GNOME. Если этого недостаточно — переоткройте.
Comment 23 Alexey Rusakov 2009-08-20 18:19:39 MSD
К сожалению, это только кажется, что исправлено. На самом деле симлинк applications-common.menu не используется при построении меню. С равным успехом этого файла могло бы не существовать.
Comment 24 Sergey V Turchin 2009-08-20 18:50:47 MSD
А у меня со ссылкой не воспроизводиться ни на kbuildsycoca ни на kbuildsycoca4

Или см. #7
Comment 25 Alexey Rusakov 2009-08-20 18:56:59 MSD
Попробуй в файле applications.menu сейчас поменять местами пункты меню. Если результат перемены мест у тебя будет заметен в реальном меню, показывай файлы и рассказывай как тебе это удалось.
Comment 26 Sergey V Turchin 2009-08-20 19:17:55 MSD
Я ж говорю, скопируй себе и меняй, как больше нравиться.
Я, вообще, откатил бы последние изменения в applications.menu касательно <Layout>
Comment 27 Alexey Rusakov 2009-08-20 20:09:42 MSD
Хотелось иметь с KDE что-то общее... :(
Разобрался, в общем. Всё не так страшно, фокус с симлинком работает, но изменения в организации (с изменениями наполнения всё нормально) меню не подхватываются без перезапуска панели. Скорее всего, gnome-panel слушает изменения файла-симлинка и не слушает изменения файла, на который ссылается симлинк. Это не очень хорошо, но уж точно не дистроблокер.
Comment 28 Alexey Rusakov 2009-08-20 20:16:01 MSD
Между тем спасти kbuildsycoca* (оба) можно ещё и так: перенести нынешнее содержимое applications.menu в applications-common.menu, а в applications.menu оставить что-нибудь вроде <Menu><MergeFile>applications-common.menu</MergeFile></Menu>. Тогда никакого ухода в бесконечную рекурсию не наступает, всё радостно запускается и работает.
Но баг на gnome-menus про симлинки исправить в любом случае будет полезно.
Comment 29 Sergey V Turchin 2009-08-20 20:28:56 MSD
(В ответ на комментарий №28)
> <Menu><MergeFile>applications-common.menu</MergeFile></Menu>.
Нельзя, это теперь GNOME ;-)
Ок, сделаю.
Comment 30 Alexey Rusakov 2009-08-20 23:06:23 MSD
(В ответ на комментарий №29)
> (В ответ на комментарий №28)
> > <Menu><MergeFile>applications-common.menu</MergeFile></Menu>.
> Нельзя, это теперь GNOME ;-)
> Ок, сделаю.
Давай shared task'ом я освобождаю applications-common.menu, а ты его занимаешь :)
Comment 31 Zerg 2009-08-20 23:41:59 MSD
Не надо. Я просто другое имя файла возьму.
Comment 32 Alexey Rusakov 2009-08-21 01:17:17 MSD
Хорошо.