From owner-cvs-src-old@FreeBSD.ORG Tue Jun 29 22:38:02 2010 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8EBEB1065676 for ; Tue, 29 Jun 2010 22:38:02 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7DF718FC15 for ; Tue, 29 Jun 2010 22:38:02 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id o5TMc2eR093979 for ; Tue, 29 Jun 2010 22:38:02 GMT (envelope-from jilles@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id o5TMc26I093978 for cvs-src-old@freebsd.org; Tue, 29 Jun 2010 22:38:02 GMT (envelope-from jilles@repoman.freebsd.org) Message-Id: <201006292238.o5TMc26I093978@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to jilles@repoman.freebsd.org using -f From: Jilles Tjoelker Date: Tue, 29 Jun 2010 22:37:45 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/bin/sh expand.c jobs.c jobs.h sh.1 X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jun 2010 22:38:02 -0000 jilles 2010-06-29 22:37:45 UTC FreeBSD src repository Modified files: bin/sh expand.c jobs.c jobs.h sh.1 Log: SVN rev 209600 on 2010-06-29 22:37:45Z by jilles sh: Forget about terminated background processes sooner. Unless $! has been referenced for a particular job or $! still contains that job's pid, forget about it after it has terminated. If $! has been referenced, remember the job until the wait builtin has reported its completion (either with the pid as parameter or without parameters). In interactive mode, jobs are forgotten after termination has been reported, which happens before primary prompts and through the jobs builtin. Even then, though, remember a job if $! has been referenced. This is similar to what is suggested by POSIX and should fix most memory leaks (which also tend to cause sh to use more CPU time) with long running scripts that start background jobs. Caveats: * Repeatedly referencing $! without ever doing 'wait', like while :; do foo & echo started foo: $!; sleep 60; done will still use a lot of memory and CPU time in the long run. * The jobs and jobid builtins do not cause a job to be remembered for longer like expanding $! does. PR: bin/55346 Revision Changes Path 1.65 +2 -2 src/bin/sh/expand.c 1.78 +56 -5 src/bin/sh/jobs.c 1.20 +3 -1 src/bin/sh/jobs.h 1.142 +5 -1 src/bin/sh/sh.1