avagin
Bash Помоги поправить скрипт. Задача простая, перезапустить скрипт с теми же опциями, но в контейнере
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
GOlang Go Как в мире go принято линковаться с бинарными библиотеками. Как это делать я нашел, но почитав немного складывается впечатление, что лучше этого не делать. Ну и как-то не много биндингов для go находится. Есть у кого-то четкое понимание этого вопроса?
avagin
Python Нужна помощь python разработчика. У меня есть функция, которая создает пару unix сокетов и затем выкидывает експешен. Я думал, что в этом случае сокеты будут закрыты, но я что-то не понимаю и они остаются жить. Кто может объяснить такое поведение?
def asd():
s = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM)
raise adfas
avagin
Как такое компилится без ворнингов?
if (!hlist_nulls_unhashed(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode));
hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
avagin
rcu Linux Казалось бы RCU достаточно простая штука, но какая же боль искать рейсы на подобной синхронизации. Оказывается тут есть еще более ушатаная штука под названием SLAB_DESTROY_BY_RCU, где use after free — это штатная ситуация... Having fun!
avagin
fuse Linux Два линкед файла имеют разные 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
Linux Меня тут студент удивил. Он в обработчике SIGCHLD зовет waitpid. Да, я и сам сто раз так делал. Прикол в другом. Он перед этим errno сохранил, и на выходе его значение восстановил. Я сначала вроде возбудился, а потом подумал, ведь это действительно имеет смысл...
avagin
Linux criu Вышла очередная версия CRIU v0.8! Новой функциональности немного, но пофикшено достаточное количество багом. Все больше и больше людей пробуют CRIU и удивляются, что оно таки работает. lkml.org
avagin
Linux Добавил trace event в ядро, чтоб понять, что iptable-s правила генеряться не правильно. Я явно что-то не то делаю, но похоже это и есть linux way
avagin
Linux criu Вот никогда бы не подумал, что придется писать код, который отмапливает код и стек прямо под собой и делает это для чего-то осмысленного.
avagin
Linux criu OpenVZ checkpoint Барабанная дробь и CRIU v0.7 доступен во всех интернетах страны. Основная фишка этого релиза — это итеративная миграция. Теперь с помощью CRIU контейнеры можно мигрировать даже круче, чем это было сделано в OpenVZ. Так же в этом релизе было пофикшено большое количество багов серьезных и не очень, добавлена поддержка tun устройств (Да, теперь вы можете задампить openvpn)... plus.google.com
avagin
namespaces Linux Задачка. Есть два процесса, которые могут между собой общаться. Даже скажу больше, что второй процесс — это далекий родственник первого. Второй процесс живет в другом pid неймспейсе. Как первый процесс может узнать пид второго процесса в своем pidns.
avagin
Linux По факту ядро рассматривает все 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;
}
}