Package: mldonkey-server Version: 2.8.1-2 Followup-For: Bug #394543 On my machine it doesn't take as long to shut down mldonkey-server but the problem is the same here.
To make it a little more obvious I have written the following little bash script: #!/bin/sh sudo /etc/init.d/mldonkey-server stop # as long as there are process with UID of mldonkey the # mldonkey-server isn't really shutdown IMHO (provided the UID is # used by the mldonkey-server only) while ps -u mldonkey do echo "mldonkey-server still running!" echo "will sleep 1 more second..." echo sleep 1 done Executing the script, when the server has been running for a while (meaning the server is _REALLY_ running and _NOT_ in the middle of its startup process), gives the following output on my machine: " Stopping MLDonkey: mlnet. PID TTY TIME CMD 16924 ? 00:00:00 mldonkey_server 16929 ? 00:00:19 mlnet 16931 ? 00:00:00 logger 16933 ? 00:00:00 logger 17206 ? 00:00:00 sh mldonkey-server still running! will sleep 1 more second... PID TTY TIME CMD 16924 ? 00:00:00 mldonkey_server 17216 ? 00:00:00 logger <defunct> mldonkey-server still running! will sleep 1 more second... PID TTY TIME CMD " So it is ovious, that, when the init script says mldonkey-server has been stopped, the server is still running. I appended a patch, that might fix that problem by simply using the sleep loop applied in my liitle script above. It seems to suffice to wait until "mldonkey_server" has disappeared from the process table, since according to my logs that is also the process that removes the .pid file: log: "mldonkey_server: Removing pidfile: /var/run/mldonkey/mlnet.pid" On my machine it works fine so far except for one special case I run across incidentally. If I choose to start "mldonkey-server" and almost immediatly stop it after the .pidfile was just created it will fail due to unclean shutdown of "mldonkey_server" (note the "_" instead of "-"!). In this case the following happens from my POV: In my /var/log/messages I discovered that /var/run/mldonkey/mlnet.pid is created before the "Core" of "mlnet" is running. And when one attempts to stop the daemon before the core is really up and running, it will take about 5 minutes to stop the "mlnet" core, as this seems to be the timeout for sending the SIGKILL to all processes of "mldonkey_server" (see log snippet below) SIGTERM is considered to have failed. But the logger process still remains in the output of ps! log: Nov 7 05:16:13 Hellraiser mldonkey_server: Terminate process Nov 7 05:16:13 Hellraiser mldonkey_server: Stopping processes PID ( 2199 2201 2203 ) Nov 7 05:16:13 Hellraiser mldonkey_server: Waiting termination of process 2199 Nov 7 05:16:14 Hellraiser mldonkey_server: Process 2199 terminated Nov 7 05:16:14 Hellraiser mldonkey_server: Waiting termination of process 2201 Nov 7 05:16:14 Hellraiser mldonkey_server: Process 2201 terminated Nov 7 05:16:14 Hellraiser mldonkey_server: Waiting termination of process 2203 Nov 7 05:16:14 Hellraiser mldonkey_server: Process 2203 terminated Nov 7 05:16:14 Hellraiser mldonkey_server: Process stopped PID ( 2199 2201 2203 ) Nov 7 05:16:14 Hellraiser mldonkey_server: MLDonkey server end Nov 7 05:16:14 Hellraiser mldonkey_server: Removing pidfile: /var/run/mldonkey/mlnet.pid Nov 7 05:16:15 Hellraiser mldonkey_server: Set niceness of the process: 18 Nov 7 05:16:15 Hellraiser mldonkey_server: Set uid/gid of the process (110, 1002) Nov 7 05:16:15 Hellraiser mldonkey_server: Set umask of the process: 18 Nov 7 05:16:15 Hellraiser mldonkey_server: Chdir to chdir dir: /var/lib/mldonkey Nov 7 05:16:15 Hellraiser mldonkey_server: Fork the process Nov 7 05:16:15 Hellraiser mldonkey_server: Reset the group leader Nov 7 05:16:15 Hellraiser mldonkey_server: Fork a second time the process Nov 7 05:16:15 Hellraiser mldonkey_server: Close standard IO Nov 7 05:16:15 Hellraiser mldonkey_server: Process is running in the background --> Nov 7 05:16:15 Hellraiser mldonkey_server: Writing PID (2486) to pidfile: /var/run/mldonkey/mlnet.pid Nov 7 05:16:15 Hellraiser mldonkey_server: Launching MLnet process Nov 7 05:16:15 Hellraiser mldonkey_server: Launching MLnet stderr logger Nov 7 05:16:15 Hellraiser mldonkey_server: Launching MLnet stdout logger Nov 7 05:16:15 Hellraiser mlnet_error: 2006/11/07 05:16:15 [cO] Starting MLDonkey 2.8.1 ... Nov 7 05:16:15 Hellraiser mlnet_error: 2006/11/07 05:16:15 [cO] Language DE, locale UTF-8, ulimit for open files 1024 Nov 7 05:16:15 Hellraiser mlnet_error: 2006/11/07 05:16:15 [cO] MLDonkey is working in . Nov 7 05:16:15 Hellraiser mlnet_error: 2006/11/07 05:16:15 Loading language resource /var/lib/mldonkey/mlnet_strings.de_DE.UTF-8 Nov 7 05:16:15 Hellraiser mlnet_error: 2006/11/07 05:16:15 [cO] loaded language resource file Nov 7 05:16:15 Hellraiser mlnet_error: 2006/11/07 05:16:15 [DNS] Resolving [Hellraiser] ... Nov 7 05:16:15 Hellraiser mlnet_error: 2006/11/07 05:16:15 [DNS] Resolving [www.mldonkey.org] ... Nov 7 05:16:15 Hellraiser mlnet_error: 2006/11/07 05:16:15 [IPblock] loading /var/lib/mldonkey/blocklist.p2p --> Nov 7 05:16:16 Hellraiser mldonkey_server: Terminate process Nov 7 05:16:16 Hellraiser mldonkey_server: Stopping processes PID ( 2491 2493 2495 ) Nov 7 05:16:16 Hellraiser mldonkey_server: Waiting termination of process 2491 Nov 7 05:16:25 Hellraiser mlnet_error: 2006/11/07 05:16:25 [IPblock] 136447 ranges loaded - optimized to 136447 Nov 7 05:16:25 Hellraiser mlnet_error: 2006/11/07 05:16:25 [cUd] converting 2 users to new format Nov 7 05:16:26 Hellraiser mlnet_error: 2006/11/07 05:16:26 [cCO] Options correctly saved Nov 7 05:16:26 Hellraiser mlnet_error: 2006/11/07 05:16:26 [dMain] Check http://www.mldonkey.net/ for updates Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] enabling networks: Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] ---- enabling Donkey ---- Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [EDK] loading sources completed Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] using port 8662 (client_port TCP) Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] using port 8666 (client_port UDP) Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] using port 11918 (kademlia_port UDP) Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] ---- enabling interfaces ---- Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] using port 4080 (http_port) Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] using port 4000 (telnet_port) Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] using port 4001 (gui_port) Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] using port 1213 (gift_port) Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 disabled networks: BitTorrent FileTP G2 Gnutella Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] To command: telnet 127.0.0.1 4000 Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] Or with browser: http://127.0.0.1:4080 Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] For a GUI check out http://sancho-gui.sourceforge.net Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] Connect to IP 127.0.0.1, port 4001 Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] If you connect from a remote machine adjust allowed_ips Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] mldonkey is now running as user mldonkey Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [dMain] mldonkey is now running as uid 110 Nov 7 05:16:27 Hellraiser mlnet_error: 2006/11/07 05:16:27 [cCO] Options correctly saved --> Nov 7 05:16:28 Hellraiser mlnet_error: 2006/11/07 05:16:28 [dMain] Core started --> Nov 7 05:16:28 Hellraiser mlnet_error: 2006/11/07 05:16:28 [dMain] Core started Nov 7 05:16:28 Hellraiser mlnet_error: 2006/11/07 05:16:28 [dMain] Option log_file is empty, disable logging completely... Nov 7 05:16:28 Hellraiser mlnet_error: 2006/11/07 05:16:28 [dMain] Disabling output to console, to enable: stdout true Nov 7 05:21:16 Hellraiser mldonkey_server: Process 2491 not responding, taking measure: SIGKILL Nov 7 05:21:16 Hellraiser mldonkey_server: Waiting termination of process 2493 Nov 7 05:21:16 Hellraiser mldonkey_server: Process stopped PID ( 2491 2493 2495 ) output of "date && ps -u mldonkey": Di 7. Nov 06:10:49 CET 2006 PID TTY TIME CMD 2493 ? 00:00:00 logger 2495 ? 00:00:00 logger So there are still 2 PID's related to the user "mldonkey". Since thoes were considered stopped by the mldonkey_server, mldonkey_server stopped itself, so the patched init script would falsely tell you, that it stopped mldonkey (hopefully this will be the only special case). Anyway that would happen after 5 minutes! So when stopping manually, one should notice, that something went wrong (or at least think about the idea of immediatly stopping a just started service ;). Best Regards Marcus Blumhagen -- System Information: Debian Release: testing/unstable APT prefers testing APT policy: (990, 'testing'), (150, 'unstable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.17-2-k7-lsm Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Versions of packages mldonkey-server depends on: ii adduser 3.99 Add and remove users and groups ii debconf [debconf-2.0] 1.5.8 Debian configuration management sy ii dpkg 1.13.22 package maintenance system for Deb ii libbz2-1.0 1.0.3-6 high-quality block-sorting file co ii libc6 2.3.6.ds1-7 GNU C Library: Shared libraries ii libgcc1 1:4.1.1-13 GCC support library ii libgd2-noxpm 2.0.33-5.1 GD Graphics Library version 2 (wit ii libpng12-0 1.2.8rel-7 PNG library - runtime ii libstdc++6 4.1.1-13 The GNU Standard C++ Library v3 ii mime-support 3.37-1 MIME files 'mime.types' & 'mailcap ii ucf 2.0016 Update Configuration File: preserv ii zlib1g 1:1.2.3-13 compression library - runtime mldonkey-server recommends no packages. -- debconf information excluded
--- /etc/init.d/mldonkey-server 2006-11-07 01:55:48.000000000 +0100 +++ /etc/init.d/mldonkey-server.new 2006-11-07 01:55:37.000000000 +0100 @@ -107,6 +107,10 @@ stop) echo -n "Stopping $DESC: $NAME" start-stop-daemon --stop --oknodo --pidfile $PIDFILE + while ps -A | grep -q mldonkey_server + do + sleep 1 + done echo "." ;; reload) @@ -116,7 +120,6 @@ ;; force-reload|restart) $0 stop - sleep 1 $0 start ;; *)
signature.asc
Description: Digital signature