[Pkg-sysvinit-devel] Bug#594253: Bug#594253: init.d/rc concurrent shutdown tries to run the stop action twice

Kel Modderman kel at otaku42.de
Tue Sep 21 13:18:55 UTC 2010


On Wednesday 25 August 2010 07:05:14 Ron wrote:
> Package: sysv-rc
> Version: 2.86.ds1-65
> Severity: normal
> 
> Hi Petter :)
> 
> Thanks for the tips, it turns out this is nothing particularly tricky
> at all, it's just a plain vanilla bug in /etc/init.d/rc ;
> 
> Around line 184 we have this code:
> 
>         case "$runlevel" in
>                 0|6)
>                         ACTION=stop
>         ...
> 
> 
> Followed by this at line 220:
> 
> 	if [ makefile = "$CONCURRENCY" ]
> 	then
> 		[ "$previous" != N ] && startup stop
>         ...
> 
> 
> which calls 'startup stop' the first time, and is followed at line 268 by:
> 
> 	if [ makefile = "$CONCURRENCY" ]
> 	then
> 		if [ S = "$runlevel" ]
> 		then
> 			startup boot
> 		else
> 			startup $ACTION
> 		fi
> 	else
>         ...
> 
> Which then calls 'startup stop' again :(

Thanks for the report, this change should sort out the issue:

diff -u sysvinit-2.88dsf/debian/src/sysv-rc/etc/init.d/rc sysvinit-2.88dsf/debian/src/sysv-rc/etc/init.d/rc
--- sysvinit-2.88dsf/debian/src/sysv-rc/etc/init.d/rc
+++ sysvinit-2.88dsf/debian/src/sysv-rc/etc/init.d/rc
@@ -217,10 +215,13 @@
 	done
 	step=0
 
+	# First, run the KILL scripts.
 	if [ makefile = "$CONCURRENCY" ]
 	then
-		[ "$previous" != N ] && startup stop
-	# First, run the KILL scripts.
+		if [ "$ACTION" = "start" ] && [ "$previous" != N ]
+		then
+			startup stop
+		fi
 	elif [ "$previous" != N ]
 	then
 		# Run all scripts with the same level in parallel
---

Thanks, Kel





More information about the Pkg-sysvinit-devel mailing list