LINUX.ORG.RU

Сообщения Tujh

 

Ubuntu 14.04 LTS: Не могу залогиниться

 , ,

Добрый день всем.

Дано: Ubuntu 14.04 LTS уже второй раз после обновлений слетает возможность авторизоваться в системе. Выглядит так, что грузится dm (установлен Gnome+gdm, но ставил и Unity+ligthdm, ситуация та же самая), отображается окно ввода логина, а затем и пароля и всё - дальше висит фон dm. Можно переключиться в консоль, снять менеджер

sudo service gdm stop
и запустить «иксы»
startx
при этом прогрузится рабочий стол и можно работать.

Но в таком случае процесс «init --user» с не единичным PID (видимо как раз тот, что отвечает за создание «иксовой» сессии пользователя) грузит одно ядро процессора на 100% и «висит», но вполне себе реагирует на SIGSTOP.

Первоначально заметил ещё, что драйвер видеокарты переключился на «Gallium 0.4 llvmpipe», починил, добавив пользователя в группу video, драйвер стал, как и полагается «Intel® Haswell Desktop». Но проблему с dm не решило. Да думаю и драйвер то переключился из-за того, что «иксы» запущены вручную.

Обнаружил, что LXDE работает корректно (предполагаю из-за того, что не использует аппаратное ускорение графики), но само lxde не устраивает. Поиском нашлась подобная проблема:

Обновил kubuntu 14.10. Не могу залогиниться

но там решилось переустановкой системы, первоначально я поступил точно так же, но проблема повторилась ровно через неделю, а переустанавливать систему каждую неделю - это вообще «не вариант». Да и в упомянутом топике речь шла о KDE, а у меня то же самое воспроизводится на Unity и Gnome3.

Кто-нибудь сталкивался? Куда копать? Поиском подобные вопросы находил не однократно, но решений в ответах нет.

Tujh
()

100% загрузка CPU при выводе в XTerm

Здравствуйте. Пытаюсь разобраться, как можно использовать xterm для своих нужд, нужен вывод текста в консольв X-ах. Набросал простенький пример.

using namespace std;

int clone_xterm(void* pPtr)
{
    cout << "create xterm process..." << endl;
    int l_fID = open("/tmp/xterm_file", O_CREAT | O_RDONLY | O_NONBLOCK, S_IREAD| S_IWRITE | S_IRGRP | S_IWGRP | S_IROTH);
    cout << "open file /tmp/xterm_file with ID = " << l_fID << endl;
    stringstream l_ss;
    l_ss << "-Sxt/" << l_fID;
    if (execlp("xterm", "xterm", l_ss.str().c_str(), NULL) == -1)
    {
        cout << "create xterm proces filed :(" << endl;
    }
    else
        cout << "xterm created :)" << endl;
    close(l_fID);
    return 0;
}

int main()
{
    void *l_pstack = malloc(1048576);
    char *l_p = (char*)l_pstack + 1048575;
    char *l_pStr = (char*)"test\n\r";
    int l_fID = open("/tmp/xterm_file", O_CREAT | O_WRONLY | O_NONBLOCK | O_TRUNC, S_IREAD| S_IWRITE | S_IRGRP | S_IWGRP | S_IROTH);
    pid_t l_pXterm = (pid_t)clone(&clone_xterm, (void*)l_p, 0, NULL);
    int i = 0;
    while (i < 10)
    {
        sleep(1);
        cout << "i = " << i << endl;
        write(l_fID, (void*)l_pStr, strlen(l_pStr));
        i++;
    }
    kill(l_pXterm, SIGQUIT);
    close(l_fID);
    remove("/tmp/xterm_file");
    free(l_pstack);
    return 0;
}

Все работает, но проблема в том, что пока открыто второе окно xterm (созданное через execlp() и в котором отражаются выводимые строки) загрузка процессора составляет 100%. Как только комментирую ключ запуска -Sccn нагрузка на процессор обычная. Как этого можно избежать, или, что я делаю не правильно?

ASP14 (FC9) + GCC4.3.2 + xterm (241)

Заранее благодарю за ответы.

P.S. на стиль кода прошу не смотреть ибо пример «написан на коленке», что бы понять «как оно работает».

Tujh
()