On Sun, Dec 15, 2013 at 06:22:03PM +0400, Sergey Vlasov wrote: > Нет, это сам konsole ухитряется каким-то боком портить маску сигналов, > поскольку даже в xterm, запущенном в fvwm, в котором: > > $ grep "^Sig" /proc/$$/status > SigQ: 4/47818 > SigPnd: 0000000000000000 > SigBlk: 0000000000000002 > SigIgn: 0000000000384004 > SigCgt: 0000000008012003 > > запуск konsole -e sh -c 'grep "^Sig" /proc/$$/status; read foo' > даёт: > > SigQ: 4/47818 > SigPnd: 0000000000000000 > SigBlk: 00007f1212291c00 > SigIgn: 0000000000000004 > SigCgt: 0000000008010002 > > Драйвер nvidia в данном случае используется: > > [ 31.575] (--) PCI:*(0:1:0:0) 10de:1201:1458:3527 rev 161, Mem @ 0xf8000000/33554432, 0xc8000000/134217728, 0xd4000000/67108864, I/O @ 0x00009f00/128, BIOS @ 0x????????/524288 > [ 32.819] (II) NVIDIA dlloader X Driver 331.20 Wed Oct 30 17:16:53 PDT 2013 > [ 36.241] (II) NVIDIA(0): NVIDIA GPU GeForce GTX 560 (GF114) at PCI:1:0:0 (GPU-0) > > [ 35.342486] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 331.20 Wed Oct 30 17:43:35 PDT 2013 > > kernel-image-std-def-3.10.23-alt1 > kernel-modules-nvidia-std-def-331.20-alt1.199191.1 > nvidia_glx_331.20-331.20-alt123 > nvidia_glx_common-331.20-alt127 Это безобразие ещё и не воспроизводится под strace. Тест, очищенный от любого вида shell (где могут производиться лишние действия с сигналами, например, для реализации job control): konsole --nofork -e grep -h "^Sig" /proc/self/status /dev/stdin С драйвером nvidia три попытки запуска подряд дали результаты: SigQ: 1/47818 SigPnd: 0000000000000000 SigBlk: 00007f2e5492bc00 SigIgn: 0000000000000000 SigCgt: 0000000000000000 SigQ: 1/47818 SigPnd: 0000000000000000 SigBlk: 00007f4808032c00 SigIgn: 0000000000000000 SigCgt: 0000000000000000 SigQ: 1/47818 SigPnd: 0000000000000000 SigBlk: 00007f2865897c00 SigIgn: 0000000000000000 SigCgt: 0000000000000000 (да, они ещё и каждый раз разные; мусор, попадающий в маску заблокированных сигналов, похож на какой-то указатель). При добавлении strace (даже без -fF) получается всё чисто (повторил раз 10): SigQ: 1/47818 SigPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000000000000 SigCgt: 0000000000000000 Добавление LD_PRELOAD=/usr/lib64/libGL.so (чтобы отломать libGL от nvidia) также убирает чушь из маски заблокированных сигналов: SigQ: 1/47818 SigPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000000000000 SigCgt: 0000000180000000 Кстати, libGL.so.1 там на самом деле чем-то грузится динамически - в выводе ldd /usr/bin/konsole её нет.