> ----- Original Message ----- 
> From: "Denys Vlasenko" <[EMAIL PROTECTED]>
> To: "Harald Kuethe" <[EMAIL PROTECTED]>
> Cc: <[email protected]>
> Sent: Tuesday, April 01, 2008 11:51 PM
> Subject: Re: [PATCH] init.c, halt command not working


> On Tuesday 01 April 2008 23:41, Harald Kuethe wrote:
> > > ----- Original Message ----- 
> > > From: "Denys Vlasenko" <[EMAIL PROTECTED]>
> > > To: <[email protected]>
> > > Cc: "Harald Küthe" <[EMAIL PROTECTED]>
> > > Sent: Monday, March 31, 2008 9:52 PM
> > > Subject: Re: [PATCH] init.c, halt command not working
> > 
> > 
> > > On Monday 31 March 2008 21:59, Harald Küthe wrote:
> > > > > The sequence of events is:
> > > > > SIGUSR1 is received
> > > > > halt_reboot_pwoff(SIGUSR1) calls
> > > > >  kill_all_processes() calls
> > > > >   run_actions(SHUTDOWN):
> > > > >                         if (a->action_type & (SYSINIT | WAIT | 
> > > > CTRLALTDEL | SHUTDOWN | RESTART)) {
> > > > >                                 waitfor(run(a));
> > > > >                                 delete_init_action(a);
> > > > > run(a) vforks... and this is somehow doesn't work very well
> > > > 
> > > > It looks as if SIGUSR1 is !!not!! received because halt_reboot_pwoff()
> > > > is not processed.
> 
> > > Please confirm that you added a debug printout to
> > > halt_reboot_pwoff and it is not triggering when halt
> > > sends SIGUSR1 to init.
> > 
> > Yes, confirmed!
> 
> And also it doesn't trigger when you send signal by hand -
> "kill -USR1 1" ?

Yes no trigger with this

> --
> vda

I attached a strace output of the killall init (which restarts the system) as 
well as of the kill 1 (which does not)
Maybe this helps.

/ # strace -fF killall init
execve("/bin/killall", ["killall", "init"], [/* 7 vars */]) = 0
brk(0)                                  = 0x10068a24
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x30017000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/lib/tls/libcrypt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/tls", 0x7ffff230)          = -1 ENOENT (No such file or directory)
open("/lib/libcrypt.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\t"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=30349, ...}) = 0
mmap(0xffb3000, 246400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xffb3000
mprotect(0xffb8000, 225920, PROT_NONE)  = 0
mmap(0xffc7000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,3, 0x4000) = 0xffc7000
mmap(0xffc9000, 156288, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffc9000
close(3)                                = 0
open("/lib/libgcc_s_nof.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\31"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=193993, ...}) = 0
mmap(0xff86000, 116660, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xff86000
mprotect(0xff93000, 63412, PROT_NONE)   = 0
mmap(0xffa2000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,3, 0xc000) = 0xffa2000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\1\316"..., 512) = 
512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1352446, ...}) = 0
mmap(0xfe53000, 1191204, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) 
= 0xfe53000
mprotect(0xff5f000, 93476, PROT_NONE)   = 0
mmap(0xff6e000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10b000) = 0xff6e000
mmap(0xff74000, 7460, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS,-1, 0) = 0xff74000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x30018000
mprotect(0xff6e000, 8192, PROT_READ)    = 0
mprotect(0xffc7000, 4096, PROT_READ)    = 0
mprotect(0x30026000, 4096, PROT_READ)   = 0
getuid()                                = 0
getpid()                                = 91
brk(0)                                  = 0x10068a24
brk(0x10089a24)                         = 0x10089a24
brk(0x1008a000)                         = 0x1008a000
open("/dev/null", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = -1 ENOTDIR (Not a 
directory)
open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3
fstat64(3, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
getdents64(3, /* 35 entries */, 1024)   = 1024
getdents64(3, /* 17 entries */, 1024)   = 408
open("/proc/1/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "1 (init) D 0 0 0 0 -1 256 12 236"..., 1023) = 183
close(4)                                = 0
open("/proc/2/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "2 (keventd) S 1 1 1 0 -1 64 0 0 "..., 1023) = 121
close(4)                                = 0
open("/proc/3/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "3 (ksoftirqd_CPU0) S 1 1 1 0 -1 "..., 1023) = 126
close(4)                                = 0
open("/proc/4/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "4 (kswapd) S 1 1 1 0 -1 2112 0 0"..., 1023) = 118
close(4)                                = 0
open("/proc/5/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "5 (bdflush) S 1 1 1 0 -1 64 0 0 "..., 1023) = 117
close(4)                                = 0
open("/proc/6/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "6 (kupdated) S 1 1 1 0 -1 64 0 0"..., 1023) = 118
close(4)                                = 0
open("/proc/7/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "7 (cifsoplockd) S 1 1 1 0 -1 64 "..., 1023) = 112
close(4)                                = 0
open("/proc/8/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "8 (mtdblockd) S 1 1 1 0 -1 2112 "..., 1023) = 121
close(4)                                = 0
open("/proc/9/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "9 (rpciod) S 1 1 1 0 -1 64 0 0 0"..., 1023) = 117
close(4)                                = 0
open("/proc/21/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "21 (inetd) S 1 21 21 0 -1 320 27"..., 1023) = 176
close(4)                                = 0
open("/proc/56/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "56 (avia_av_wdt) S 1 1 1 0 -1 64"..., 1023) = 124
close(4)                                = 0
open("/proc/60/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "60 (avia_gt_wdt) S 1 1 1 0 -1 64"..., 1023) = 124
close(4)                                = 0
open("/proc/80/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "80 (sh) S 1 80 80 1088 90 0 75 8"..., 1023) = 176
close(4)                                = 0
open("/proc/81/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "81 (init) S 1 81 81 1026 81 64 0"..., 1023) = 163
close(4)                                = 0
open("/proc/90/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "90 (strace) R 80 90 80 1088 90 0"..., 1023) = 178
close(4)                                = 0
open("/proc/91/stat", O_RDONLY|O_LARGEFILE) = 4
read(4, "91 (killall) R 90 90 80 1088 90 "..., 1023) = 162
close(4)                                = 0
getdents64(3, /* 0 entries */, 1024)    = 0
brk(0x10089000)                         = 0x10089000
close(3)                                = 0
kill(1, SIGTERM)                        = 0

HK: halt_reboot_pwoff (my debug printout in halt_reboot_pwoff)
= 0
call bb_signals
exit(0)                                 = ?

The system is going down NOW!
Sending SIGTERM to all processes
Sending SIGKILL to all processes
Requesting system reboot


/ # strace -fF kill 1
execve("/bin/kill", ["kill", "1"], [/* 7 vars */]) = 0
brk(0)                                  = 0x10068a24
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x30017000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/lib/tls/libcrypt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/tls", 0x7ffff230)          = -1 ENOENT (No such file or directory)
open("/lib/libcrypt.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\t"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=30349, ...}) = 0
mmap(0xffb3000, 246400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xffb3000
mprotect(0xffb8000, 225920, PROT_NONE)  = 0
mmap(0xffc7000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,3, 0x4000) = 0xffc7000
mmap(0xffc9000, 156288, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffc9000
close(3)                                = 0
open("/lib/libgcc_s_nof.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\31"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=193993, ...}) = 0
mmap(0xff86000, 116660, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xff86000
mprotect(0xff93000, 63412, PROT_NONE)   = 0
mmap(0xffa2000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,3, 0xc000) = 0xffa2000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\1\316"..., 512) = 
512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1352446, ...}) = 0
mmap(0xfe53000, 1191204, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) 
= 0xfe53000
mprotect(0xff5f000, 93476, PROT_NONE)   = 0
mmap(0xff6e000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10b000) = 0xff6e000
mmap(0xff74000, 7460, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS,-1, 0) = 0xff74000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x30018000
mprotect(0xff6e000, 8192, PROT_READ)    = 0
mprotect(0xffc7000, 4096, PROT_READ)    = 0
mprotect(0x30026000, 4096, PROT_READ)   = 0
getuid()                                = 0
kill(1, SIGTERM)                        = 0
exit(0)                                 = ?
_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox

Reply via email to