Чтобы добавлять сообщения и комментарии, .

@avagin:
avagin

Помоги поправить скрипт. Задача простая, перезапустить скрипт с теми же опциями, но в контейнере
args="$@"
# pidns is used to avoid conflicts
# mntns is used to mount /proc
# net is used to avoid conflicts of parasite sockets
unshare --pid --mount --ipc --net — bash -c "
(
ip link set up dev lo &&
mount --make-rprivate / &&
umount -l /proc &&
mount -t proc proc proc &&
umount -l /dev/pts &&
mount -t devpts zdtm_pts /dev/pts -o newinstance,ptmxmode=666 &&
mount --bind /dev/pts/ptmx /dev/ptmx &&
./zdtm.sh $args
)"
Сейчас он не может правильно обработать опции вида "\(xxx\|yyyy\)". Как его исправить?

@avagin:
avagin

Как в мире go принято линковаться с бинарными библиотеками. Как это делать я нашел, но почитав немного складывается впечатление, что лучше этого не делать. Ну и как-то не много биндингов для go находится. Есть у кого-то четкое понимание этого вопроса?

@avagin:
avagin

Нужна помощь python разработчика. У меня есть функция, которая создает пару unix сокетов и затем выкидывает експешен. Я думал, что в этом случае сокеты будут закрыты, но я что-то не понимаю и они остаются жить. Кто может объяснить такое поведение?
def asd():
s = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM)
raise adfas

@avagin:
avagin

Оказывается я опять упустил что-то в этом чудном языке
$ asd () { ( return 1; ); echo ok; }; asd
ok

@avagin:
avagin

Как такое компилится без ворнингов?
if (!hlist_nulls_unhashed(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode));
hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);

@avagin:
avagin

Казалось бы RCU достаточно простая штука, но какая же боль искать рейсы на подобной синхронизации. Оказывается тут есть еще более ушатаная штука под названием SLAB_DESTROY_BY_RCU, где use after free — это штатная ситуация... Having fun!

@avagin:
avagin

Два линкед файла имеют разные inode номера на fuse (fusexmp). Это нормально?
372 ? Ssl 0:02 /root/fuse-fuse/example/.libs/lt-fusexmp -odev /mnt/test/
In [1]: import os, stat

In [2]:

In [2]: fd = open("xxx", "w+")

In [3]: os.link("xxx", "yyy")

In [4]: fd2 = open("yyy", "r")

In [5]: os.fstat(fd.fileno())[stat.ST_INO]
Out[5]: 803

In [6]: os.fstat(fd2.fileno())[stat.ST_INO]
Out[6]: 804

@avagin:
avagin

А кто-то знает, зачем systemd-nspawn байндмаунтит /proc/sys из хоста в контейенр?

@avagin:
avagin

Послал патч вечером, а утром он уже у Линуса в дереве:).

@avagin:
avagin

А кто знает в чем разница void asd() {....} и void asd(void) {...}?

@avagin:
avagin

Меня тут студент удивил. Он в обработчике SIGCHLD зовет waitpid. Да, я и сам сто раз так делал. Прикол в другом. Он перед этим errno сохранил, и на выходе его значение восстановил. Я сначала вроде возбудился, а потом подумал, ведь это действительно имеет смысл...

@avagin:
avagin

Вышла очередная версия CRIU v0.8! Новой функциональности немного, но пофикшено достаточное количество багом. Все больше и больше людей пробуют CRIU и удивляются, что оно таки работает. lkml.org

@avagin:
avagin

Для развлечения животной части человека у нас есть ipad, телевизор, kinect etc. Но слово "компьютер" — это слово для human sapience. opennet.ru

@avagin:
avagin

Добавил trace event в ядро, чтоб понять, что iptable-s правила генеряться не правильно. Я явно что-то не то делаю, но похоже это и есть linux way

@avagin:
avagin

Вот никогда бы не подумал, что придется писать код, который отмапливает код и стек прямо под собой и делает это для чего-то осмысленного.

@avagin:
avagin

Барабанная дробь и CRIU v0.7 доступен во всех интернетах страны. Основная фишка этого релиза — это итеративная миграция. Теперь с помощью CRIU контейнеры можно мигрировать даже круче, чем это было сделано в OpenVZ. Так же в этом релизе было пофикшено большое количество багов серьезных и не очень, добавлена поддержка tun устройств (Да, теперь вы можете задампить openvpn)... plus.google.com

@avagin:
avagin

Задачка. Есть два процесса, которые могут между собой общаться. Даже скажу больше, что второй процесс — это далекий родственник первого. Второй процесс живет в другом pid неймспейсе. Как первый процесс может узнать пид второго процесса в своем pidns.

@avagin:
avagin

Как с помощью утилиты unshare запустить bash в новом pid namespace?

@avagin:
avagin

По факту ядро рассматривает все vma с флагом MAP_GROWSDOWN, как стек.
if (error_code & PF_USER) {
/*
* Accessing the stack below %sp is always a bug.
* The large cushion allows instructions like enter
* and pusha to work. ("enter $65535, $31" pushes
* 32 pointers and then decrements %sp by 65535.)
*/
if (unlikely(address + 65536 + 32 * sizeof(unsigned long) < regs->sp)) {
bad_area(regs, error_code, address);
return;
}
}

@avagin:
avagin

Интервью с Павлом Емельяновым. О развитии контейнерной функциональности в ядре Linux. История проекта CRIU и планы на будущее. habrahabr.ru