Hello, I found that sygprocmask system call is being called lots of times during the startup of zsh. most of them were inside the function `shingetline`. So This patch add a flag into the function, so that it only call `winch_(un)?block` witch make the system call only if needed. I have included a benchmarking test after and before the patch, as you can see it got rid of 90% of the system calls, and zsh startup and exit times got reduced by 20%. Kind regards, -- Mohamed Elawadi mohamed@elawadi.net ➜ code git:(master) ✗ /usr/bin/time -p bash -c 'for i in $(seq 1 100); do zsh -i -c "exit"; done' real 29.93 user 16.90 sys 7.84 ➜ code git:(master) ✗ strace -cf zsh -i -c 'exit' % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 68.12 0.012507 0 169032 rt_sigprocmask 24.79 0.004552 71 64 28 wait4 3.13 0.000574 2 271 getdents ------ ----------- ----------- --------- --------- ---------------- 100.00 0.018361 180201 1465 total After applying the patch ➜ code git:(master) ✗ /usr/bin/time -p bash -c 'for i in $(seq 1 100); do zsh -i -c "exit"; done' real 25.08 user 14.52 sys 5.49 ➜ code git:(master) ✗ strace -cf zsh -i -c 'exit' % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 69.71 0.004623 72 64 28 wait4 8.40 0.000557 0 16364 rt_sigprocmask 4.27 0.000283 9 33 clone 2.86 0.000190 1 271 getdents ------ ----------- ----------- --------- --------- ---------------- 100.00 0.006632 27476 1464 total