Hi all,

I tracked this issue a little further...

But let's start with the beginning. I wanted to setup some custom boot tasks in 
/etc/rc.local, which is said to be the right place for it. However, it appeared 
this script is executed twice when booting into runlevel 2. And not only 
rc.local -- it's the whole rc2 which gets executed (at least) twice.

It's a Debian Sid system, daily updated, amd64 stock kernel, and nothing 
special installed (i hope).

I hacked a little 'tracker' script which is called by rc.local as well as a 
custom link from /etc/rc2.d/S00tracker. The baseline of this script is to print 
some process environment to a logfile.
(All logfiles and the fulls cript are attached to this mail as a tarball)

basically, 

echo "Runlevel: $RUNLEVEL"
echo "PPID: " $PPID
ps e -p $PPID
pstree
ps aux

This may be kind of overkill, but i wanted to ensure i don't miss some detail.

Now, this is the output of /etc/rc2.d/S00tracker written to a logfile in /tmp, 
right after booting into runlevel 2 (booting only into a login on textconsole, 
with X session disabled). Note the script is only appending anything (no 
initialization because that's already done by cleaning /tmp)  and you can  see 
anything appearing twice. Note the timestamps, there are a few seconds distance.
I'll cut the full process list -- the full output is appendet in the tarball.

Output excerpt:

--------- Time: 08:17:39 - rc2-S00 start ---------

Runlevel: 2
PPID:  1835

process environment:
  PID TTY      STAT   TIME COMMAND
 1835 ?        Ss     0:00 /bin/sh /etc/init.d/rc 2 HOME=/ init=/sbin/init 
TERM=linux BOOT_IMAGE=/boot/vmlinuz-2.6.30-2-amd64 
PATH=/sbin:/usr/sbin:/bin:/usr/bin PWD=/ rootmnt=/root SELINUX_INIT=YES 
RUNLEVEL=2 PREVLEVEL=N CONSOLE=/dev/console INIT_VERSION=sysvinit-2.86

process tree:
init-+-portmap
     |-rc---S00tracker---S00tracker---pstree
     |-rpc.idmapd
     `-udevd---100*[udevd]

All processes:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  4.2  0.0  10328   756 ?        Ss   08:17   0:00 init [2] 
(...)
root       816  0.7  0.0  17180  1428 ?        S<s  08:17   0:00 udevd --daemon
(this is appearing for 100 lines here !)
root      1835  0.0  0.0  17616  1692 ?        Ss   08:17   0:00 /bin/sh 
/etc/init.d/rc 2
root      1837  0.0  0.0  17424  1408 ?        S    08:17   0:00 /bin/sh -e 
/etc/rc2.d/S00tracker start
root      1839  0.0  0.0  17424   740 ?        S    08:17   0:00 /bin/sh -e 
/etc/rc2.d/S00tracker start
root      1842  0.0  0.0  14744  1012 ?        R    08:17   0:00 ps aux

----------- rc2-S00 stop -----------

--------- Time: 08:17:45 - rc2-S00 start ---------

Runlevel: 2
PPID:  1835

process environment:
  PID TTY      STAT   TIME COMMAND
 1835 ?        Ss     0:00 /bin/sh /etc/init.d/rc 2 HOME=/ init=/sbin/init 
TERM=linux BOOT_IMAGE=/boot/vmlinuz-2.6.30-2-amd64 
PATH=/sbin:/usr/sbin:/bin:/usr/bin PWD=/ rootmnt=/root SELINUX_INIT=YES 
RUNLEVEL=2 PREVLEVEL=N CONSOLE=/dev/console INIT_VERSION=sysvinit-2.86

process tree:
init-+-acpid
     |-atd
     |-avahi-daemon---avahi-daemon
     |-console-kit-dae---63*[{console-kit-dae}]
     |-cron
     |-cupsd
     |-2*[daemon---less]
     |-dbus-daemon
     |-gpm
     |-hald---hald-runner-+-hald-addon-acpi
     |                    |-hald-addon-cpuf
     |                    |-hald-addon-inpu
     |                    `-hald-addon-stor
     |-portmap
     |-rc---S00tracker---S00tracker---pstree
     |-rpc.idmapd
     |-rpc.mountd
     |-syslog-ng
     |-udevd---2*[udevd]
     `-xinetd

All processes:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  2.7  0.0  10328   756 ?        Ss   08:17   0:00 init [2]  
root       816  0.4  0.0  17180  1432 ?        S<s  08:17   0:00 udevd --daemon
(udev only 3 times now)
root      1835  0.7  0.0  17644  1720 ?        Ss   08:17   0:00 /bin/sh 
/etc/init.d/rc 2
(...)
root      1896  0.5  0.0  19596   940 ?        Ss   08:17   0:00 
/usr/sbin/syslog-ng -p /var/run/syslog-ng.pid
root      1907  0.0  0.0   3828   556 ?        Ss   08:17   0:00 /usr/sbin/acpid
104       1917  0.1  0.0  23332   928 ?        Ss   08:17   0:00 
/usr/bin/dbus-daemon --system
avahi     1928  0.1  0.0  33808  1520 ?        S    08:17   0:00 avahi-daemon: 
running [gandalf.local]
avahi     1929  0.0  0.0  33680   524 ?        Ss   08:17   0:00 avahi-daemon: 
chroot helper
root      1961  0.4  0.0 115860  2832 ?        Ssl  08:17   0:00 
/usr/sbin/console-kit-daemon
(...)
root      2339  0.0  0.0  17424  1404 ?        S    08:17   0:00 /bin/sh -e 
/etc/rc2.d/S00tracker start
root      2341  0.0  0.0  17424   736 ?        S    08:17   0:00 /bin/sh -e 
/etc/rc2.d/S00tracker start
root      2344  0.0  0.0  14744  1016 ?        R    08:17   0:00 ps aux

----------- rc2-S00 stop -----------

I have some questions:

(1) What does the '2' in the 'init [2]' entry of the ps output mean ?

(2) Why does udev launch 100 processes ? Is this normal ??

(3) What does SELINUX_INIT=YES (in the process environment) mean ? Package 
SeLinux is not installed here!

(4) When the script had another desing, before, i could see 63 * console-kit at 
boot time. I guess the processes are launched and terminated again so quickly 
that the 'ps' snapshot is variable. 


I can see some essential services FAIL (syslog, cron and xientd). But 
apparently they are just running later. I suspect it's because some redundant 
init process tries to start them twice. 

However, i can not find these FAIL messages in any log in /var/log (for 
example, not with grep -r FAIL *, nor when i grep for the service name).

I am also a little bit irritated about to how get the boot messages from the 
runlevel initscripts stored on disk, for later analysis. 

Further infos:
- The sysv-rc and sysvinit packages are version 2.87dsf-8.
- /etc/inittab is the original default one (i reinstalled sysvinit).
- It's still the legacy runlevel init setup.

Explanation:
I rejected the upgrade to the new dependency system in about October, since 
some initsripts were not properly prepared that time; later, when this was 
resolved, i already noted this weird bug and i still did not do it because i 
wanted to track this problem first. 
The indicator file '/etc/init.d/.legacy-bootordering' is in place and works :)

- I noted the problem only after the upgrade to grub2, but this may as well be 
unrelated.

Attached files:

rc2-S00 .... log output of /etc/rc2.d/S00tracker (this is a symlink to the 
actual script)
rclocal  ..... log output of rc.local (invoking the tracker script)
tracker ..... the tracker script
systemlogs .... some default logs. Note i cleared the system logs before reboot 
so all entries are from one boot process. Actually i created these files 2 days 
in the past but nothing changed since then.

I would appreciate any idea how to track this problem down. It does not keep me 
from doing my work, it's just i'm worried what else may be screwed. I somehow 
can not trust this system anymore.
I even started to wonder if it could be a virus (although i never heard of any 
linux PC virus) !

Maybe the problem would be 'solved' by upgrading to the new dependency system. 
However, it should be tracked right now, because it never should have happened 
in the first place, and i believe we need to know how it is possible. Because 
problems that disappear magically, tend to re-appear magically, suddenly, some 
day.

ps. if you think it's worth with the available data, ATM, i'm ready to file a 
bug. But i hope you've got some ideas how to track it better than i could do, 
and i can file a bug much more to the point then. 



Attachment: 2009-12-04.tar.bz2
Description: application/bzip

_______________________________________________
Pkg-sysvinit-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/pkg-sysvinit-devel

Reply via email to