[sisyphus] FreeNX в LXC

Игорь Андросов blacester на gmail.com
Вт Июн 21 15:09:08 MSK 2016


20 июня 2016 г., 17:44 пользователь Евгений Терешков <evg-krsk на yandex.ru>
написал:

> Игорь Андросов пишет:



> > Однако после всего этого - заметил в хосте следующее сообщение в журнале,
>
> после попытки подключения FreeNX.
> >
> > kernel: traps: ssh-agent[21556] general protection ip:7f6ba137ab10
> > sp:7ffeef76d400 error:0 in ld-2.23.so[7f6ba1362000+24000]
>
> Поищите это время в выводе journalctl


В общем разобрался с coredump, нужно было еще suid_dumpable разрешить,
после этого в хост прилетела корка.
Дальше было чудесатей:

                Stack trace of thread 11373:
                #0  0x00007f8d10e10b10 check_one_fd (/lib64/ld-2.23.so)
                #1  0x00007f8d10e10b30 __libc_check_standard_fds (/lib64/
ld-2.23.so)
                #2  0x00007f8d10e0f5df _dl_sysdep_start (/lib64/ld-2.23.so)
                #3  0x00007f8d10dfcdaa _dl_start_final (/lib64/ld-2.23.so)
                #4  0x00007f8d10df8e18 _start (/lib64/ld-2.23.so)

Эм я правильно вижу что падает еще до входа в main???

В check_one_fd есть блок кода:

  49 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l49>
      /* For writable descriptors we use /dev/full.  */
  50 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l50>
      if ((mode & O_ACCMODE) == O_WRONLY)
  51 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l51>
        {
  52 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l52>
          name = _PATH_DEV "full";
  53 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l53>
          dev = makedev (DEV_FULL_MAJOR, DEV_FULL_MINOR);
  54 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l54>
        }
  55 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l55>
      else
  56 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l56>
        {
  57 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l57>
          name = _PATH_DEVNULL;
  58 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l58>
          dev = makedev (DEV_NULL_MAJOR, DEV_NULL_MINOR);
  59 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l59>
        }

а в __libc_check_standard_fds

  98 <https://sourceware.org/git/?p=glibc.git;a=blob;f=csu/check_fds.c;h=baa77a95d7c1fe2e6d40a1996cead065511331cb;hb=HEAD#l98>
  check_one_fd (STDIN_FILENO, O_WRONLY | O_NOFOLLOW);

То есть тут явно есть обращение к /dev/full, в контейнере он есть, но на
попытку "потрогать" отвечает что операция не позволена, добавил его в
конфиг lxc, после перезапуска контейнера ssh-agent перестал падать.
Вопрос остался как тогда работало раньше и почему под [s|l]trace работает?


-- 
С уважением Игорь.
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/sisyphus/attachments/20160621/95b09852/attachment.html>


Подробная информация о списке рассылки Sisyphus