Bug#668238: terminator: Doesn't close unlinked files
I've reported this issue upstream: https://bugs.launchpad.net/terminator/+bug/1645500 e.
Bug#668238: terminator: Doesn't close unlinked files
Oh, wait... The fact that these file descriptors remain open _even after you close the corresponding terminal_ is still present (in Terminator-1.90) and is an actual valid issue. Hang on, I'll investigate. e.
Bug#668238: terminator: Doesn't close unlinked files
Hi, I've just read it more carefully that you're not only worried about the number of files, but also about the overall disk usage and the entire design as well. Along with the encryption, compression was also implemented, so the overall occupied size is now (with the gtk3-based vte-0.40 or newer) about 3-4x smaller than before. (Note that compression relies on the sparse block features of Unix filesystems, see https://bugzilla.gnome.org/show_bug.cgi?id=738121 and https://git.gnome.org/browse/vte/tree/src/vtestream-file.h?h=vte-0-46 if you really care about the technical details.) Looking at your bullet points in order: 1. Just make your /tmp large enough, or decrease the scrollback size. "or is actually tmpfs in memory" -- this is not a concern; the scrollback has to reside somewhere, if it's in vte's (terminator's) memory then it's essentially the same as being written to a file on tmpfs. You can't have a large scrollbar that's just magical without being stored anywhere :) 2. That's a valid point, but not related to vte or terminator in particular, and should have an app-agnostic generic solution. With a trivial modification vte could only unlilnk those files when the widget is destroyed, it'd make them easier to discover, yet remain on the disk if the app crashes. Unlinking and keeping an fd open is a typical pattern used by many others who won't need the file once the app exits, I see no reason for vte not to follow this pattern. 3. As said, with newer (gtk3-based) vte (used by terminator-1.90) it's at most 3 per widget. 4. I don't understand this at all. Who would select() on them? It's unlinked as soon as created, so noone is supposed to open it other than the creator vte / terminator itself. It's not waiting for data to appear there, so there's no select() whatsoever going on on these files, only read()/write() operations. cheers, e.
Bug#668238: terminator: Doesn't close unlinked files
Hi, It is by design that Terminator (more precisely, the vte widget that does the actual terminal emulation) stores the scrollback data in unlinked temporary files. Terminator-0.98 uses the gtk2-based vte for terminal emulation, which uses too many of them, up to 12 per vte (that is, per terminal). Please ask the maintainers to upgrade to Terminator-1.90 (see Debian bug 807668) which uses the much newer gtk3-based vte, in which we've optimized it to use at most 3 files per vte. (Moreover, the contents are no longer in plain text, they are encrypted.) e.
Bug#668238: terminator: Doesn't close unlinked files
Hello Witold, Apparently it's a problem of python-vte library: https://bugs.launchpad.net/ubuntu/+source/vte/+bug/778872 Also it happens in gnome-terminal in Fedora Distro: https://bugzilla.redhat.com/show_bug.cgi?id=647942 Please, could you reassign the bug report to the proper package. Thank you so much. Kind regards, -- Julián Moreno Patiño Debian Developer .''`. Debian GNU/{Linux,KfreeBSD} : :' : Free Operating Systems `. `' http://debian.org/ `- GPG Fingerprint: C2C8 904E 314C D8FA 041D 9B00 D5FD FC15 6168 BF60 Registered GNU Linux User ID 488513
Bug#668238: terminator: Doesn't close unlinked files
Package: terminator Version: 0.95-1 Severity: normal I do not know if this is bug or by design, but terminator keeps lots of opened files in /tmp/ which are actually deleted: user1@sil:~/$ LC_ALL=C ls -U -l /proc/`ps aux | grep '/usr/bin/terminator' | grep -v grep | awk '{print $2}'`/fd/ total 0 lr-x-- 1 user1 user1 64 Apr 10 03:29 0 - /dev/null lrwx-- 1 user1 user1 64 Apr 10 03:29 1 - /home/user1/.xsession-errors lrwx-- 1 user1 user1 64 Apr 10 03:29 2 - /home/user1/.xsession-errors lrwx-- 1 user1 user1 64 Apr 10 03:29 3 - socket:[12124] lrwx-- 1 user1 user1 64 Apr 10 03:29 4 - socket:[12119] lrwx-- 1 user1 user1 64 Apr 10 03:29 5 - anon_inode:[eventfd] lrwx-- 1 user1 user1 64 Apr 10 03:29 6 - socket:[12126] lrwx-- 1 user1 user1 64 Apr 10 03:29 7 - socket:[12128] lrwx-- 1 user1 user1 64 Apr 10 03:29 8 - anon_inode:[eventfd] lr-x-- 1 user1 user1 64 Apr 10 03:29 9 - pipe:[12123] l-wx-- 1 user1 user1 64 Apr 10 03:29 10 - pipe:[12123] lrwx-- 1 user1 user1 64 Apr 10 03:29 11 - /dev/ptmx lrwx-- 1 user1 user1 64 Apr 10 03:29 12 - /dev/pts/5 lrwx-- 1 user1 user1 64 Apr 10 03:29 13 - socket:[12133] lrwx-- 1 user1 user1 64 Apr 10 03:29 14 - anon_inode:[eventfd] lr-x-- 1 user1 user1 64 Apr 10 03:29 15 - pipe:[12161] l-wx-- 1 user1 user1 64 Apr 10 03:29 16 - pipe:[12161] lrwx-- 1 user1 user1 64 Apr 10 03:29 17 - /dev/ptmx lrwx-- 1 user1 user1 64 Apr 10 03:29 18 - /tmp/vteEC8PCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 19 - /tmp/vtePE8PCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 20 - /tmp/vte1OPRCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 21 - /dev/ptmx lrwx-- 1 user1 user1 64 Apr 10 03:29 22 - /tmp/vte6Z3DCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 23 - /tmp/vteJ13DCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 24 - /tmp/vteF33DCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 25 - /tmp/vte19VICW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 26 - /dev/pts/0 lrwx-- 1 user1 user1 64 Apr 10 03:29 27 - /tmp/vte8IMFCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 28 - /tmp/vte3RKXCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 29 - /tmp/vteCSKXCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 30 - /tmp/vteMMKXCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 31 - /tmp/vte8FNLCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 32 - /tmp/vteYIMFCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 33 - /tmp/vteL4VXCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 34 - /tmp/vteB6VXCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 35 - /tmp/vte36VXCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 36 - /dev/pts/1 lrwx-- 1 user1 user1 64 Apr 10 03:29 37 - /tmp/vteO69QCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 38 - /tmp/vte23SXCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 39 - /tmp/vteI5SXCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 40 - /tmp/vte979QCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 41 - /tmp/vte42ZSCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 42 - /tmp/vteIH2LCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 43 - /tmp/vteWF2LCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 44 - /tmp/vteR45GCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 45 - /tmp/vte935GCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 46 - /tmp/vteIQ2WCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 47 - /dev/ptmx lrwx-- 1 user1 user1 64 Apr 10 03:29 48 - /tmp/vteSX7QCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 49 - /tmp/vteIGGOCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 50 - /tmp/vteBEGOCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 51 - /tmp/vteUR3YCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 52 - /tmp/vteUS3YCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 53 - /tmp/vteVZJRCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 54 - /tmp/vteFZJRCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 55 - /tmp/vte117QCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 56 - /tmp/vteLYFZCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 57 - /tmp/vteGWFZCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 58 - /tmp/vteJ18XCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 59 - /tmp/vteO38XCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 60 - /tmp/vteRFBMCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 61 - /tmp/vteCEBMCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 62 - /tmp/vteBF9XCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 63 - /tmp/vteZE9XCW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 64 - /tmp/vte3N6ICW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 65 - /tmp/vteCPA0CW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 66 - /tmp/vteSNA0CW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 67 - /tmp/vteZN6ICW (deleted) lrwx-- 1 user1 user1 64 Apr 10 03:29 68 - /tmp/vte83DHCW (deleted) lrwx-- 1 user1 user1 64