https://bugs.kde.org/show_bug.cgi?id=438097
--- Comment #32 from Ash Blake <telepath...@tutanota.com> --- Created attachment 141875 --> https://bugs.kde.org/attachment.cgi?id=141875&action=edit A Python script that parses strace output for FD information I wrote a script to parse strace output and abbreviate it, displaying only close() calls and recvmsg() calls, but filtered by cmsg_type=SCM_RIGHTS and abbreviated so that only the cmsg_data part containing newly received file descriptors is visible. After terminating the script with Ctrl+C, it will display all the file descriptors that have been received by the KWin process, but not closed. This is the output in a bug-free situation (the reproducing program was ran with a burst size of 20 and window lifetime of 100ms, which does not trigger the bug) $ sudo strace -e trace=recvmsg,close -p `pidof kwin_wayland` 2>&1 | python process_strace.py close(5670) = 0 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670],...) = 84 recvmsg(48,...,cmsg_data=[5670],...) = 8 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 recvmsg(44,...,cmsg_data=[5670],...) = 152 close(5670) = 0 recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16 ^CThese descriptors were left open: 5670, 5675 The mentioned descriptors have been however closed shortly after. This is the output with also 20 windows, but a lifetime of 16ms: $ sudo strace -e trace=recvmsg,close -p `pidof kwin_wayland` 2>&1 | python process_strace.py recvmsg(44,...,cmsg_data=[5696],...) = 152 close(5696) = 0 recvmsg(48,...,cmsg_data=[5696, 5697],...) = 16 recvmsg(44,...,cmsg_data=[5696],...) = 152 close(5696) = 0 recvmsg(48,...,cmsg_data=[5696, 5697],...) = 16 recvmsg(44,...,cmsg_data=[5700],...) = 152 close(5700) = 0 recvmsg(48,...,cmsg_data=[5700, 5701],...) = 16 recvmsg(44,...,cmsg_data=[5700],...) = 152 close(5700) = 0 recvmsg(44,...,cmsg_data=[5700],...) = 152 close(5700) = 0 recvmsg(48,...,cmsg_data=[5700, 5701],...) = 16 recvmsg(44,...,cmsg_data=[5702],...) = 152 close(5702) = 0 recvmsg(44,...,cmsg_data=[5702],...) = 152 close(5702) = 0 recvmsg(48,...,cmsg_data=[5702, 5703],...) = 16 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 close(5704) = 0 recvmsg(44,...,cmsg_data=[5704],...) = 152 recvmsg(48,...,cmsg_data=[5705, 5706],...) = 16 close(5704) = 0 ^CThese descriptors were left open: 5696, 5697, 5700, 5701, 5702, 5703, 5705, 5706 All of these descriptors were open after waiting a few seconds and checking, and are still open while I'm typing this. -- You are receiving this mail because: You are watching all bug changes.