Хотя речь пойдет о Branch 4.1, но его нет в багзилле, да и версии там "прямо из Сизифа", поэтому пишу сюда. у меня подозрения на переставший нормально работать xtoolwait. При помощи него я запускаю автостартом некоторые программы при загрузке icewm. Раньше все работало как часы - теперь же, после обновления из Бранча 4.1 некоторые процессы xtoolwait висят "в воздухе при старте, пожирая процессорное время до тех пор, пока не убьешь. Происходит это с теми программами, для запуска которых я прописывал xtoolwait -timeout и время задержки в секундах. Может это несовместимость нового xorg и xtoolwait? Или icewm.. Или это ложная тревога.. Не могу с уверенностью что-либо утверждать.. Steps to Reproduce: 1. icewm-1.2.35-alt2.M40 2. В ~/.icewm/startup.d создаем исполняемые файлы типа xtoolwait -timeout 25 xxkb, или подобные. Для разнообразия делаем файл без -timeout, например, xtoolwait gkrellm 3. Заходим в иксы/icewm и смотрим.. Actual Results: Имеем висящие процессы а-ля xtoolwait -timeout 25 xxkb, вызывающие практически 100%-ную загрузку процессора. Лечится убийством процесса. Expected Results: Ожидался нормальный старт программ при запуске icewm (прежде, в Branch 4.0, все работало)
Вот гадость :(
Здесь две ошибки (спасибо xtruss, которую я недавно собрал): 1. xxkb не посылает event PropertyNotify, совсем. Можно дохакать, чтобы принимался во внимание event EmbedInfo, который виден в xtruss 2. ltrace показал, что xtoolwait в случае, когда клиент запустился, а собития не пришло, после тайм-аута висит на XCloseDisplay(). Что-то там не синхронизуется, что ли. И здесь ничего не понятно
В общем, поправил для конкретно xxkb (чтобы по свойству _XEMBED_INFO тоже завершалось). Это довольно-таки грязный хак, но по-другому не выйдет, разве что вообще не запускать подобные программы с xtoolwait-ом.