when running ``portupgrade -a'' zombie processes are generated. i tested on different platforms (also 2 i386 boxes with -p4 and -STABLE) and they come when starting ``portupgrade''. (verified with top). after portupgrade finishes the zombies are also die away. i.e. during a run: (cjm@satanii.enemy.org:[/u1/cjm] 27)--> ps -auxw|grep Z USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 52176 0.0 0.0 0 0 p4 Z+ 5:04PM 0:00.00 (grep) root 52177 0.0 0.0 0 0 p4 Z+ 5:04PM 0:00.00 (grep) [17 lines snipped] root 52171 0.0 0.0 0 0 p4 Z+ 5:04PM 0:00.00 (grep) cjm 55270 0.0 0.5 1720 960 pk S+ 5:09PM 0:00.05 grep Z root 52172 0.0 0.0 0 0 p4 Z+ 5:04PM 0:00.00 (grep) root 52173 0.0 0.0 0 0 p4 Z+ 5:04PM 0:00.00 (grep) root 52174 0.0 0.0 0 0 p4 Z+ 5:04PM 0:00.00 (grep) root 52175 0.0 0.0 0 0 p4 Z+ 5:04PM 0:00.00 (grep) addidional zombie-processes are generated if running ``pkgdb -F'' if more packages installed on a system then more zombies keep hanging around. (i noticed the problem cause ``portupgrade -a -n'' runs quite long on the alpha box). How-To-Repeat: each time portupgrade/pkgdb is running.
sorry. forget to mention the pkg_versions i have installed: pkg_tarup-1.2_3 Generates binary package from installed package pkgconfig-0.12.0 An utility used to retrieve information about installed lib portupgrade-20020429 Very powerful FreeBSD ports/packages upgrading tool and mor ruby-1.6.7.2002.05.02p An object-oriented interpreted scripting language ruby-bdb1-0.1.7 Ruby interface to Berkeley DB revision 1.8x with full featu ruby-fnmatch-1.1b_1 A Ruby module which provides File::fnmatch and File::FNM_* ruby-optparse-0.8.6 Yet another command line option parser for Ruby later, cjm
Responsible Changed From-To: freebsd-ports->knu Over to maintainer
State Changed From-To: open->patched I added a SIGCHLD signal hander in the development version to cope with the problem. Stay tuned for the next release. Thanks for the PR.
State Changed From-To: patched->closed Fixed in 20021113, by explicitly kicking a waitpid immediately after each popen() is done instead of delaying it until Ruby gets short of resource and thus runs a GC. Please check out. Thanks!