dave14305
Part of the Furniture
Haven’t seen it fail yet. So netlink is probably the common thread between nvram and wl hangs.@dave14305 Can you try strace'ing a variable that's been moved jffs? Notice how it doesn't use netlink but normal file IO, with locking. Just curious at what point it fails, or maybe it doesn't.
Code:strace -r nvram get dhcp_staticlist
Code:
root# strace -ry nvram get dhcp_staticlist
0.000000 execve("/bin/nvram", ["nvram", "get", "dhcp_staticlist"], 0x7fdcb5d0b8 /* 18 vars */ <unfinished ...>
0.000442 [ Process PID=5055 runs in 32 bit mode. ]
strace: WARNING: Proper structure decoding for this personality is not supported, please consider building strace with mpers support enabled.
0.000028 <... execve resumed>) = 0
0.000069 brk(NULL) = 0x77e000
0.000054 uname({sysname="Linux", nodename="router", ...}) = 0
0.000094 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf70ff000
0.000055 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
0.000125 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3</tmp/etc/ld.so.cache>
0.000218 fstat64(3</tmp/etc/ld.so.cache>, 0xfff5b970) = 0
0.000060 mmap2(NULL, 10528, PROT_READ, MAP_PRIVATE, 3</tmp/etc/ld.so.cache>, 0) = 0xf70fc000
0.000055 close(3</tmp/etc/ld.so.cache>) = 0
0.000062 open("/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3</lib/libc.so.6>
0.000058 read(3</lib/libc.so.6>, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0xm\1\0004\0\0\0"..., 512) = 512
0.000061 fstat64(3</lib/libc.so.6>, 0xfff5b9b0) = 0
0.000050 mmap2(NULL, 1299824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3</lib/libc.so.6>, 0) = 0xf6f93000
0.000056 mprotect(0xf70bb000, 65536, PROT_NONE) = 0
0.000049 mmap2(0xf70cb000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3</lib/libc.so.6>, 0x128000) = 0xf70cb000
0.000070 mmap2(0xf70ce000, 9584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf70ce000
0.000057 close(3</lib/libc.so.6>) = 0
0.000065 open("/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3</lib/libgcc_s.so.1>
0.000058 read(3</lib/libgcc_s.so.1>, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\254\317\0\0004\0\0\0"..., 512) = 512
0.000059 fstat64(3</lib/libgcc_s.so.1>, 0xfff5b998) = 0
0.000049 mmap2(NULL, 182372, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3</lib/libgcc_s.so.1>, 0) = 0xf6f66000
0.000054 mprotect(0xf6f83000, 61440, PROT_NONE) = 0
0.000044 mmap2(0xf6f92000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3</lib/libgcc_s.so.1>, 0x1c000) = 0xf6f92000
0.000068 close(3</lib/libgcc_s.so.1>) = 0
0.000058 open("/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3</lib/libdl.so.2>
0.000057 read(3</lib/libdl.so.2>, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0(\t\0\0004\0\0\0"..., 512) = 512
0.000288 fstat64(3</lib/libdl.so.2>, 0xfff5b980) = 0
0.000054 mmap2(NULL, 73912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3</lib/libdl.so.2>, 0) = 0xf6f53000
0.000054 mprotect(0xf6f55000, 61440, PROT_NONE) = 0
0.000044 mmap2(0xf6f64000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3</lib/libdl.so.2>, 0x1000) = 0xf6f64000
0.000078 close(3</lib/libdl.so.2>) = 0
0.000052 open("/lib/libnvram.so", O_RDONLY|O_CLOEXEC) = 3</lib/libnvram.so>
0.000059 read(3</lib/libnvram.so>, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\08\t\0\0004\0\0\0"..., 512) = 512
0.000058 fstat64(3</lib/libnvram.so>, 0xfff5b968) = 0
0.000048 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf70fb000
0.000045 mmap2(NULL, 69528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3</lib/libnvram.so>, 0) = 0xf6f42000
0.000055 mprotect(0xf6f43000, 61440, PROT_NONE) = 0
0.000044 mmap2(0xf6f52000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3</lib/libnvram.so>, 0) = 0xf6f52000
0.000065 close(3</lib/libnvram.so>) = 0
0.000052 open("/usr/lib/libshared.so", O_RDONLY|O_CLOEXEC) = 3</usr/lib/libshared.so>
0.000061 read(3</usr/lib/libshared.so>, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\214X\1\0004\0\0\0"..., 512) = 512
0.000059 fstat64(3</usr/lib/libshared.so>, 0xfff5b950) = 0
0.000049 mmap2(NULL, 646528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3</usr/lib/libshared.so>, 0) = 0xf6ea4000
0.000054 mprotect(0xf6f11000, 65536, PROT_NONE) = 0
0.000045 mmap2(0xf6f21000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3</usr/lib/libshared.so>, 0x6d000) = 0xf6f21000
0.000068 mmap2(0xf6f2c000, 89472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf6f2c000
0.000058 close(3</usr/lib/libshared.so>) = 0
0.000058 open("/lib/libwlcsm.so", O_RDONLY|O_CLOEXEC) = 3</lib/libwlcsm.so>
0.000059 read(3</lib/libwlcsm.so>, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\200\34\0\0004\0\0\0"..., 512) = 512
0.000059 fstat64(3</lib/libwlcsm.so>, 0xfff5b938) = 0
0.000049 mmap2(NULL, 90092, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3</lib/libwlcsm.so>, 0) = 0xf6e8e000
0.000053 mprotect(0xf6e93000, 61440, PROT_NONE) = 0
0.000043 mmap2(0xf6ea2000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3</lib/libwlcsm.so>, 0x4000) = 0xf6ea2000
0.000076 close(3</lib/libwlcsm.so>) = 0
0.000062 open("/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3</lib/libpthread.so.0>
0.000059 read(3</lib/libpthread.so.0>, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\\I\0\0004\0\0\0"..., 512) = 512
0.000059 fstat64(3</lib/libpthread.so.0>, 0xfff5b770) = 0
0.000049 mmap2(NULL, 164436, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3</lib/libpthread.so.0>, 0) = 0xf6e65000
0.000055 mprotect(0xf6e7a000, 65536, PROT_NONE) = 0
0.000052 mmap2(0xf6e8a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3</lib/libpthread.so.0>, 0x15000) = 0xf6e8a000
0.000072 mmap2(0xf6e8c000, 4692, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf6e8c000
0.000058 close(3</lib/libpthread.so.0>) = 0
0.000083 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf70fa000
0.000053 set_tls(0xf70fa780) = 0
0.000196 mprotect(0xf70cb000, 8192, PROT_READ) = 0
0.000086 mprotect(0xf6e8a000, 4096, PROT_READ) = 0
0.000364 mprotect(0xf6f64000, 4096, PROT_READ) = 0
0.000085 mprotect(0xf7100000, 4096, PROT_READ) = 0
0.000049 munmap(0xf70fc000, 10528) = 0
0.000049 set_tid_address(0xf70fa328) = 5055
0.000034 set_robust_list(0xf70fa330, 12) = 0
0.000050 rt_sigaction(SIGRTMIN, {sa_handler=0xf6e69278, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0xf6fbfb10}, NULL, 8) = 0
0.000062 rt_sigaction(SIGRT_1, {sa_handler=0xf6e6935c, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0xf6fbfb10}, NULL, 8) = 0
0.000053 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
0.000054 ugetrlimit(RLIMIT_STACK, {rlim_cur=2048*1024, rlim_max=RLIM_INFINITY}) = 0
0.000202 mmap2(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf6e44000
0.000079 stat64("/jffs", 0xfff5bcc0) = 0
0.000049 stat64("/jffs/nvram_war", 0xfff5bcc0) = 0
0.000051 open("/var/nvram.lock", O_WRONLY|O_CREAT, 0644) = 3</var/nvram.lock>
0.000070 flock(3</var/nvram.lock>, LOCK_EX) = 0
0.000095 stat64("/jffs/nvram", 0xfff5acb0) = 0
0.000045 stat64("/jffs/nvram/dhcp_staticlist", 0xfff5acb0) = 0
0.000052 open("/jffs/nvram/dhcp_staticlist", O_RDONLY) = 4</jffs/nvram/dhcp_staticlist>
0.000072 read(4</jffs/nvram/dhcp_staticlist>, "<00:9C>192.168.1.5>>", 16383) = 32
0.000059 close(4</jffs/nvram/dhcp_staticlist>) = 0
0.000049 close(3</var/nvram.lock>) = 0
0.000059 fstat64(1</dev/pts/0>, 0xfff5bcf0) = 0
0.000051 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf70fe000
0.000047 write(1</dev/pts/0>, "<00:9C>192.168.1.5>>"..., 33<00:9C>192.168.1.5>>
) = 33
0.000061 munmap(0xf6e44000, 135168) = 0
0.000079 exit_group(0) = ?
0.000227 +++ exited with 0 +++