From: Alexander Gavrilov <angavrilov@gmail.com>
To: git@vger.kernel.org
Cc: Paul Mackerras <paulus@samba.org>
Subject: [PATCH (GITK) 1/6] gitk: Kill back-end processes on window close.
Date: Sun, 27 Jul 2008 10:18:22 +0400 [thread overview]
Message-ID: <200807271018.22969.angavrilov@gmail.com> (raw)
In-Reply-To: <200807271017.23272.angavrilov@gmail.com>
Date: Sat, 12 Jul 2008 16:09:28 +0400
When collecting commits for a rarely changed, or recently
created file or directory, rev-list may work for a noticeable
period of time without producing any output. Such processes
don't receive SIGPIPE for a while after gitk is closed, thus
becoming runaway CPU hogs.
Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
---
gitk | 35 +++++++++++++++++++++++++----------
1 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/gitk b/gitk
index fddcb45..29d79d6 100755
--- a/gitk
+++ b/gitk
@@ -375,19 +375,33 @@ proc start_rev_list {view} {
return 1
}
+proc stop_instance {inst} {
+ global commfd leftover
+
+ set fd $commfd($inst)
+ catch {
+ set pid [pid $fd]
+ exec kill $pid
+ }
+ catch {close $fd}
+ nukefile $fd
+ unset commfd($inst)
+ unset leftover($inst)
+}
+
+proc stop_backends {} {
+ global commfd
+
+ foreach inst [array names commfd] {
+ stop_instance $inst
+ }
+}
+
proc stop_rev_list {view} {
- global commfd viewinstances leftover
+ global viewinstances
foreach inst $viewinstances($view) {
- set fd $commfd($inst)
- catch {
- set pid [pid $fd]
- exec kill $pid
- }
- catch {close $fd}
- nukefile $fd
- unset commfd($inst)
- unset leftover($inst)
+ stop_instance $inst
}
set viewinstances($view) {}
}
@@ -2103,6 +2117,7 @@ proc makewindow {} {
bind . <$M1B-minus> {incrfont -1}
bind . <$M1B-KP_Subtract> {incrfont -1}
wm protocol . WM_DELETE_WINDOW doquit
+ bind . <Destroy> {stop_backends}
bind . <Button-1> "click %W"
bind $fstring <Key-Return> {dofind 1 1}
bind $sha1entry <Key-Return> gotocommit
--
1.5.6.3.18.gfe82
next prev parent reply other threads:[~2008-07-27 6:19 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-27 6:17 [PATCH (GITK) 0/6] Runaway process and commit selection fixes Alexander Gavrilov
2008-07-27 6:18 ` Alexander Gavrilov [this message]
2008-07-27 6:19 ` [PATCH (GITK) 2/6] gitk: Register diff-files & diff-index in commfd, to ensure kill Alexander Gavrilov
2008-07-27 6:20 ` [PATCH (GITK) 3/6] gitk: On Windows use a Cygwin-specific flag for kill Alexander Gavrilov
2008-07-27 6:20 ` [PATCH (GITK) 4/6] gitk: Fixed broken exception handling in diff Alexander Gavrilov
2008-07-27 6:21 ` [PATCH (GITK) 5/6] gitk: Fixed automatic row selection during load Alexander Gavrilov
2008-07-27 6:22 ` [PATCH (GITK) 6/6] gitk: Fallback to selecting the head commit upon load Alexander Gavrilov
2008-07-31 11:25 ` [PATCH (GITK) 5/6] gitk: Fixed automatic row selection during load Paul Mackerras
2008-07-31 12:41 ` Alexander Gavrilov
2008-08-03 8:49 ` [RFC PATCH (GITK)] gitk: Allow overriding the default commit Alexander Gavrilov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200807271018.22969.angavrilov@gmail.com \
--to=angavrilov@gmail.com \
--cc=git@vger.kernel.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.