[AOLSERVER] TCL 8.5 and ns_proxy segfault

48 views
Skip to first unread message

Alexey Pechnikov

unread,
Mar 7, 2009, 5:46:31 AM3/7/09
to AOLS...@listserv.aol.com
Hello!

I did try to build AOL 4.5.1 with TCL 8.5. AOL is work, but nsproxy module now
doesn't work. nsproxy is simple but I don't understand why this doesn't work
:-(

$ /usr/lib/aolserver4/bin/nsproxy
Segmentation fault

I did copy strace for no-work nspoxy (TCL 8.5) and work (TCL 8.4).

===============================================
strace /usr/lib/aolserver4/bin/nsproxy

execve("/usr/lib/aolserver4/bin/nsproxy", ["/usr/lib/aolserver4/bin/nsproxy"],
[/* 21 vars */]) = 0
brk(0) = 0x804a000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f58000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=17112, ...}) = 0
mmap2(NULL, 17112, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f53000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/aolserver4/lib/libnsproxy.so", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\23\0\0004\0\0\0\240"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=19312, ...}) = 0
mmap2(NULL, 22900, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7f4d000
mmap2(0xb7f52000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x4) = 0xb7f52000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/aolserver4/lib/libnsd.so", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260K\1\0004\0\0\0\330"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=401064, ...}) = 0
mmap2(NULL, 407048, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7ee9000
mmap2(0xb7f47000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x5e) = 0xb7f47000
mmap2(0xb7f4b000, 5640, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, -1, 0) = 0xb7f4b000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/aolserver4/lib/libnsthread.so", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\3604\0\0004\0\0\0\244"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=32116, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7ee8000
mmap2(NULL, 35860, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7edf000
mmap2(0xb7ee7000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x7) = 0xb7ee7000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libtcl8.5.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0
X\1\0004\0\0\0\10"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1045016, ...}) = 0
mmap2(NULL, 1051228, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7dde000
mmap2(0xb7ed4000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0xf5) = 0xb7ed4000
mmap2(0xb7ede000, 2652, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, -1, 0) = 0xb7ede000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\n\0\0004\0\0\0H"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9680, ...}) = 0
mmap2(NULL, 12412, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7dda000
mmap2(0xb7ddc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x1) = 0xb7ddc000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libpthread.so.0", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000H\0\0004\0\0\0\330"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=116414, ...}) = 0
mmap2(NULL, 98784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7dc1000
mmap2(0xb7dd6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x14) = 0xb7dd6000
mmap2(0xb7dd8000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, -1, 0) = 0xb7dd8000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@4\0\0004\0\0\0P"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=149328, ...}) = 0
mmap2(NULL, 151680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7d9b000
mmap2(0xb7dbf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x23) = 0xb7dbf000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\34\0\0004\0\0\0\324"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=49676, ...}) = 0
mmap2(NULL, 52808, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7d8e000
mmap2(0xb7d9a000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0xb) = 0xb7d9a000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1\0004\0\0\0\4"..., 512)
= 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1413540, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7d8d000
mmap2(NULL, 1418864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7c32000
mmap2(0xb7d87000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x155) = 0xb7d87000
mmap2(0xb7d8a000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, -1, 0) = 0xb7d8a000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7c31000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7c316b0, limit:1048575,
seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1,
seg_not_present:0, useable:1}) = 0
mprotect(0xb7d87000, 4096, PROT_READ) = 0
munmap(0xb7f53000, 17112) = 0
set_tid_address(0xb7c316f8) = 12050
set_robust_list(0xb7c31700, 0xc) = 0
futex(0xbfa10740, FUTEX_WAKE_PRIVATE, 1) = 0
rt_sigaction(SIGRTMIN, {0xb7dc52e0, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb7dc5720, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
uname({sys="Linux", node="merch", ...}) = 0
brk(0) = 0x804a000
brk(0x806b000) = 0x806b000
open("/dev/null", O_RDONLY) = 3
close(3) = 0
open("/dev/null", O_WRONLY) = 3
close(3) = 0
open("/dev/null", O_WRONLY) = 3
close(3) = 0
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
open("/dev/null", O_RDWR) = 3
fcntl64(3, F_GETFD) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
open("/proc/self/maps", O_RDONLY) = 4
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
fstat64(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f57000
read(4, "08048000-08049000 r-xp 00000000 0"..., 1024) = 1024
read(4, "da000-b7ddc000 r-xp 00000000 03:0"..., 1024) = 1024
read(4, " /lib/ld-2.7.so\nb7f74000-b7f7600"..., 1024) = 194
close(4) = 0
munmap(0xb7f57000, 4096) = 0
sched_getaffinity(12050, 32, { 1 }) = 4
gettimeofday({1236422367, 604858}, NULL) = 0
time(NULL) = 1236422367
getcwd("/home/merch"..., 4096) = 12
uname({sys="Linux", node="merch", ...}) = 0
socket(PF_NETLINK, SOCK_RAW, 0) = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(4, {sa_family=AF_NETLINK, pid=12050, groups=00000000}, [12]) = 0
time(NULL) = 1236422367
sendto(4, "\24\0\0\0\26\0\1\3\337N\262I\0\0\0\0\0\0\0\0"..., 20, 0,
{sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000},
msg_iov(1)=[{"0\0\0\0\24\0\2\0\337N\262I\22/\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1\10"...,
4096}], msg_controllen=0, msg_flags=0}, 0) = 108
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000},
msg_iov(1)=[{"@\0\0\0\24\0\2\0\337N\262I\22/\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0\0"...,
4096}], msg_controllen=0, msg_flags=0}, 0) = 128
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000},
msg_iov(1)=[{"\24\0\0\0\3\0\2\0\337N\262I\22/\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0\0"...,
4096}], msg_controllen=0, msg_flags=0}, 0) = 20
close(4) = 0
open("/etc/resolv.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=20, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f57000
read(4, "nameserver 10.0.2.3\n"..., 4096) = 20
read(4, ""..., 4096) = 0
close(4) = 0
munmap(0xb7f57000, 4096) = 0
uname({sys="Linux", node="merch", ...}) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1
ENOENT (No such file or directory)
close(4) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1
ENOENT (No such file or directory)
close(4) = 0
open("/etc/nsswitch.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=475, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f57000
read(4, "# /etc/nsswitch.conf\n#\n# Example "..., 4096) = 475
read(4, ""..., 4096) = 0
close(4) = 0
munmap(0xb7f57000, 4096) = 0
open("/etc/ld.so.cache", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=17112, ...}) = 0
mmap2(NULL, 17112, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7f53000
close(4) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libnss_files.so.2", O_RDONLY) = 4
read(4,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\30\0\0004\0\0\0\250"...,
512) = 512
fstat64(4, {st_mode=S_IFREG|0644, st_size=42504, ...}) = 0
mmap2(NULL, 45720, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) =
0xb7c25000
mmap2(0xb7c2f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 4, 0x9) = 0xb7c2f000
close(4) = 0
munmap(0xb7f53000, 17112) = 0
open("/etc/host.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=9, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f57000
read(4, "multi on\n"..., 4096) = 9
read(4, ""..., 4096) = 0
close(4) = 0
munmap(0xb7f57000, 4096) = 0
futex(0xb7d8b840, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 4
fcntl64(4, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fstat64(4, {st_mode=S_IFREG|0644, st_size=241, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f57000
read(4, "127.0.0.1\tlocalhost\n127.0.1.1\tmer"..., 4096) = 241
read(4, ""..., 4096) = 0
close(4) = 0
munmap(0xb7f57000, 4096) = 0
dup(0) = 4
dup(1) = 5
close(0) = 0
open("/dev/null", O_RDONLY) = 0
close(1) = 0
dup(2) = 1
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

===============================================
With TCL 8.4 nsproxy work fine:

$ strace /usr/lib/aolserver4/bin/nsproxy
execve("/usr/lib/aolserver4/bin/nsproxy", ["/usr/lib/aolserver4/bin/nsproxy"],
[/* 21 vars */]) = 0
brk(0) = 0x804a000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7fab000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=34067, ...}) = 0
mmap2(NULL, 34067, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7fa2000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/aolserver4/lib/libnsproxy.so", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\23\0\0004\0\0\0\240"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=19312, ...}) = 0
mmap2(NULL, 22900, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7f9c000
mmap2(0xb7fa1000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x4) = 0xb7fa1000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/aolserver4/lib/libnsd.so", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260K\1\0004\0\0\0\370"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=401096, ...}) = 0
mmap2(NULL, 411176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7f37000
mmap2(0xb7f96000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x5e) = 0xb7f96000
mmap2(0xb7f9a000, 5672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, -1, 0) = 0xb7f9a000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/aolserver4/lib/libnsthread.so", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\3604\0\0004\0\0\0\264"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=32132, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f36000
mmap2(NULL, 35892, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7f2d000
mmap2(0xb7f35000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x7) = 0xb7f35000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libtcl8.4.so.0", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260b\1\0004\0\0\0T"..., 512)
= 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=733796, ...}) = 0
mmap2(NULL, 740240, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7e78000
mmap2(0xb7f22000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0xa9) = 0xb7f22000
mmap2(0xb7f2c000, 2960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, -1, 0) = 0xb7f2c000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\n\0\0004\0\0\0H"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9680, ...}) = 0
mmap2(NULL, 12412, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7e74000
mmap2(0xb7e76000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x1) = 0xb7e76000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libpthread.so.0", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000H\0\0004\0\0\0\330"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=116414, ...}) = 0
mmap2(NULL, 98784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7e5b000
mmap2(0xb7e70000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x14) = 0xb7e70000
mmap2(0xb7e72000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, -1, 0) = 0xb7e72000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@4\0\0004\0\0\0P"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=149328, ...}) = 0
mmap2(NULL, 151680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7e35000
mmap2(0xb7e59000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x23) = 0xb7e59000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\34\0\0004\0\0\0\324"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=49676, ...}) = 0
mmap2(NULL, 52808, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7e28000
mmap2(0xb7e34000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0xb) = 0xb7e34000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1\0004\0\0\0\4"..., 512)
= 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1413540, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7e27000
mmap2(NULL, 1418864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7ccc000
mmap2(0xb7e21000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x155) = 0xb7e21000
mmap2(0xb7e24000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, -1, 0) = 0xb7e24000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7ccb000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7ccb6b0, limit:1048575,
seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1,
seg_not_present:0, useable:1}) = 0
mprotect(0xb7e21000, 4096, PROT_READ) = 0
munmap(0xb7fa2000, 34067) = 0
set_tid_address(0xb7ccb6f8) = 1785
set_robust_list(0xb7ccb700, 0xc) = 0
futex(0xbff3bf70, FUTEX_WAKE_PRIVATE, 1) = 0
rt_sigaction(SIGRTMIN, {0xb7e5f2e0, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb7e5f720, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
uname({sys="Linux", node="mobigroup.ru", ...}) = 0
brk(0) = 0x804a000
brk(0x806b000) = 0x806b000
open("/dev/null", O_RDONLY) = 3
close(3) = 0
open("/dev/null", O_WRONLY) = 3
close(3) = 0
open("/dev/null", O_WRONLY) = 3
close(3) = 0
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
open("/dev/null", O_RDWR) = 3
fcntl64(3, F_GETFD) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
open("/proc/self/maps", O_RDONLY) = 4
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
fstat64(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7faa000
read(4, "08048000-08049000 r-xp 00000000 f"..., 1024) = 1024
read(4, "74000-b7e76000 r-xp 00000000 fd:0"..., 1024) = 1024
read(4, " /lib/ld-2.7.so\nb7fc7000-b7fc900"..., 1024) = 194
close(4) = 0
munmap(0xb7faa000, 4096) = 0
sched_getaffinity(1785, 32, { f }) = 4
gettimeofday({1236422433, 27948}, NULL) = 0
time(NULL) = 1236422433
getcwd("/usr/local/bin"..., 4096) = 15
uname({sys="Linux", node="mobigroup.ru", ...}) = 0
socket(PF_NETLINK, SOCK_RAW, 0) = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(4, {sa_family=AF_NETLINK, pid=1785, groups=00000000}, [12]) = 0
time(NULL) = 1236422433
sendto(4, "\24\0\0\0\26\0\1\3!O\262I\0\0\0\0\0\0\0\0"..., 20, 0,
{sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000},
msg_iov(1)=[{"0\0\0\0\24\0\2\0!O\262I\371\6\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1\10"...,
4096}], msg_controllen=0, msg_flags=0}, 0) = 168
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000},
msg_iov(1)=[{"@\0\0\0\24\0\2\0!O\262I\371\6\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0\0"...,
4096}], msg_controllen=0, msg_flags=0}, 0) = 128
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000},
msg_iov(1)=[{"\24\0\0\0\3\0\2\0!O\262I\371\6\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0\0"...,
4096}], msg_controllen=0, msg_flags=0}, 0) = 20
close(4) = 0
open("/etc/resolv.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=24, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7faa000
read(4, "nameserver 213.148.1.98\n"..., 4096) = 24
read(4, ""..., 4096) = 0
close(4) = 0
munmap(0xb7faa000, 4096) = 0
uname({sys="Linux", node="mobigroup.ru", ...}) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1
ENOENT (No such file or directory)
close(4) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1
ENOENT (No such file or directory)
close(4) = 0
open("/etc/nsswitch.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=475, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7faa000
read(4, "# /etc/nsswitch.conf\n#\n# Example "..., 4096) = 475
read(4, ""..., 4096) = 0
close(4) = 0
munmap(0xb7faa000, 4096) = 0
open("/etc/ld.so.cache", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=34067, ...}) = 0
mmap2(NULL, 34067, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7fa2000
close(4) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libnss_files.so.2", O_RDONLY) = 4
read(4,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\30\0\0004\0\0\0\250"...,
512) = 512
fstat64(4, {st_mode=S_IFREG|0644, st_size=42504, ...}) = 0
mmap2(NULL, 45720, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) =
0xb7cbf000
mmap2(0xb7cc9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 4, 0x9) = 0xb7cc9000
close(4) = 0
munmap(0xb7fa2000, 34067) = 0
open("/etc/host.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=9, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7faa000
read(4, "multi on\n"..., 4096) = 9
read(4, ""..., 4096) = 0
close(4) = 0
munmap(0xb7faa000, 4096) = 0
futex(0xb7e25840, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 4
fcntl64(4, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fstat64(4, {st_mode=S_IFREG|0644, st_size=398, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7faa000
read(4, "127.0.0.1\tlocalhost\n#192.168.0.15"..., 4096) = 398
read(4, ""..., 4096) = 0
close(4) = 0
munmap(0xb7faa000, 4096) = 0
dup(0) = 4
dup(1) = 5
close(0) = 0
open("/dev/null", O_RDONLY) = 0
close(1) = 0
dup(2) = 1
_llseek(0, 0, [0], SEEK_CUR) = 0
_llseek(1, 0, 0xbff3bc20, SEEK_CUR) = -1 ESPIPE (Illegal seek)
_llseek(2, 0, 0xbff3bc20, SEEK_CUR) = -1 ESPIPE (Illegal seek)
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
mmap2(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb74be000
mprotect(0xb74be000, 4096, PROT_NONE) = 0
clone(child_stack=0xb7cbe4c4, flags=CLONE_VM|CLONE_FS|CLONE_FILES|
CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|
CLONE_CHILD_CLEARTID, parent_tidptr=0xb7cbebd8, {entry_number:6,
base_addr:0xb7cbeb90, limit:1048575, seg_32bit:1, contents:0,
read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1},
child_tidptr=0xb7cbebd8) = 1786
futex(0x80588b8, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x80588f8, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x80588fc, FUTEX_WAIT_PRIVATE, 1, NULL) = -1 EAGAIN (Resource
temporarily unavailable)
futex(0x80588b8, FUTEX_WAKE_PRIVATE, 1) = 0
brk(0x808c000) = 0x808c000
uname({sys="Linux", node="mobigroup.ru", ...}) = 0
lstat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/share", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/share/tcltk", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/share/tcltk/tcl8.4", {st_mode=S_IFDIR|0755, st_size=4096, ...})
= 0
access("/usr/share/tcltk/tcl8.4/init.tcl", F_OK) = 0
stat64("/usr/share/tcltk/tcl8.4/init.tcl", {st_mode=S_IFREG|0644,
st_size=22729, ...}) = 0
open("/usr/share/tcltk/tcl8.4/init.tcl", O_RDONLY|O_LARGEFILE) = 9
fcntl64(9, F_SETFD, FD_CLOEXEC) = 0
ioctl(9, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbff3af18) = -1 ENOTTY (Inappropriate
ioctl for device)
read(9, "# init.tcl --\n#\n# Default system "..., 4096) = 4096
read(9, "rr $string}\n }\n}\n\n# unknown --"..., 4096) = 4096
read(9, "out\n\t\t# to return plus what we ex"..., 4096) = 4096
read(9, "if\n# the index is already loaded "..., 4096) = 4096
read(9, "ifiers $pattern] eq [namespace qu"..., 4096) = 4096
read(9, "ion eq \"renaming\"} {\n\t# Can't ren"..., 4096) = 2249
read(9, ""..., 4096) = 0
close(9) = 0
readv(4, <unfinished ...>


Best regards.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to <list...@listserv.aol.com> with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank.

Alexey Pechnikov

unread,
Mar 7, 2009, 6:20:21 AM3/7/09
to AOLS...@listserv.aol.com
Hello!

I did try to build AOL 4.5.1 with TCL 8.5. AOL is work, but nsproxy module now
doesn't work.

$ /usr/lib/aolserver4/bin/nsproxy

Alexey Pechnikov

unread,
Mar 7, 2009, 11:23:08 AM3/7/09
to AOLS...@listserv.aol.com
Hello!

With debug build TCL 8.5.6 + AOL 4.5.1 I can see by gdb:

Breakpoint 1, ThreadStorageGetHashTable (id=0xb7c0c6b0) at
/tmp/tcl8.5/tcl8.5-8.5.6/unix/../generic/tclThreadStorage.c:193
193 int index = PTR2UINT(id) % STORAGE_CACHE_SLOTS;
(gdb) n
203 Tcl_HashTable *hashTablePtr = threadStorageCache[index].hashTablePtr;
(gdb) n
205 if (threadStorageCache[index].id != id) {
(gdb) n
206 Tcl_MutexLock(&threadStorageLock);
(gdb) n
212 hPtr = Tcl_FindHashEntry(&threadStorageHashTable, (char *) id);
(gdb) p id
$1 = (Tcl_ThreadId) 0xb7c0c6b0
(gdb) p threadStorageCache[index].id
$2 = (Tcl_ThreadId) 0x0
(gdb) p threadStorageHashTable
$3 = {buckets = 0x0, staticBuckets = {0x0, 0x0, 0x0, 0x0}, numBuckets = 0,
numEntries = 0, rebuildSize = 0, downShift = 0,
mask = 0, keyType = 0, findProc = 0, createProc = 0, typePtr = 0x0}
(gdb) p id
$4 = (Tcl_ThreadId) 0xb7c0c6b0
(gdb) p &threadStorageHashTable
$5 = (Tcl_HashTable *) 0xb7ee2f40
(gdb) p id
$6 = (Tcl_ThreadId) 0xb7c0c6b0
(gdb) step
Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()

Gustaf Neumann

unread,
Mar 7, 2009, 12:02:39 PM3/7/09
to AOLS...@listserv.aol.com
Alexey Pechnikov schrieb:

> Hello!
>
> I did try to build AOL 4.5.1 with TCL 8.5. AOL is work, but nsproxy module now
> doesn't work.
>
> $ /usr/lib/aolserver4/bin/nsproxy
> Segmentation fault
>
> I did copy strace for no-work nspoxy (TCL 8.5) and work (TCL 8.4).
>
i can confirm, that aolserver 4.5.1 compiled with tcl 8.5 crashes, when
nsproxy is being called.

The strace is not very informative. gdb is better. The stack trace below
indicates that the problem might point to a problem with the
thread associated data. GetData() in nsd/tclinit.c calls
Tcl_AsyncCreate(), which crashes when it tries to get the thread data.

#1 0x0a094807 in ThreadStorageGetHashTable ()
#2 0x0a09490e in TclpThreadDataKeyGet ()
#3 0x0a093961 in Tcl_GetThreadData ()
#4 0x0a00be49 in Tcl_AsyncCreate ()
#5 0x000adb75 in GetData () at tclinit.c:1850
#6 0x000ad8e9 in GetCacheEntry (servPtr=0x2a010) at tclinit.c:1654
#7 0x000ad738 in PopInterp (server=0x0) at tclinit.c:1547
#8 0x000abeee in Ns_TclAllocateInterp (server=0x0) at tclinit.c:368
#9 0x000abe03 in Ns_TclCreateInterp () at tclinit.c:250
#10 0x00007f0a in Ns_ProxyMain (argc=1, argv=0xbffff71c, init=0x3f69
<MyInit>) at nsproxylib.c:329
#11 0x00003f63 in main (argc=1, argv=0xbffff71c) at nsproxy.c:45

not good.
-gn

Alexey Pechnikov

unread,
Mar 7, 2009, 1:42:18 PM3/7/09
to AOLS...@listserv.aol.com
Hello!

On Saturday 07 March 2009 19:23:08 Alexey Pechnikov wrote:
> $5 = (Tcl_HashTable *) 0xb7ee2f40
> (gdb) p id
> $6 = (Tcl_ThreadId) 0xb7c0c6b0
> (gdb) step
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000 in ?? ()

And I can add this

ThreadStorageGetHashTable(
Tcl_ThreadId id)<--><------>/* Id of thread to get hash table for */
{

And

0xb7e6c19b <ThreadStorageGetHashTable+143>: call *%edx
(gdb) print $edx
0

Gustaf Neumann

unread,
Mar 7, 2009, 5:47:40 PM3/7/09
to AOLS...@listserv.aol.com
Well, i found at least one problem in ns_proxy so far, but it seems
unrelated
to Tcl 8.5 and Alexey's problem.

nsproxy defines the structure Proxy as follows:

typedef struct Proxy {
....
char id[16]; /* Proxy unique string id. */
Proc *procPtr; /* Running child process, if any. */
....
} Proxy;

later, the id is initialized by

sprintf(proxyPtr->id, "%s-proxy-%d", poolPtr->name, poolPtr->nextid++);

The sprintf will cause a problem, if the pool name has more than 16-9 =
7 bytes.
Since pool name is passed in via tcl, and its length is not checked,
wierd things
are likely to happen (the procPtr will be overwritten).

For example, OpenACS does a

set handle [ns_proxy get exec_proxy]

where len(exec_proxy)>7.

The quick fix is to change char id[16] to id[32], but actually, one should
check the length...

Unfortunately, this does not help in the original problem.

-gustaf neumann

Tom Jackson

unread,
Mar 7, 2009, 6:47:22 PM3/7/09
to AOLS...@listserv.aol.com
I noticed that his tcl8.5 was located in /usr/lib:

> directory)
> open("/usr/lib/libtcl8.5.so.0", O_RDONLY) =

Don't know if he compiled it himself, or used it to compile AOLserver.
But in this case, the symptom is usually very strange and random
segfaults.

tom jackson

Gustaf Neumann

unread,
Mar 7, 2009, 6:51:21 PM3/7/09
to AOLS...@listserv.aol.com
Dear Alexey,

below is a fix for the nsproxy problem that you reported.
The problem comes from a different initialization semantics
in Tcl 8.5, that hits the nsproxy binary. The added call
should work with Tcl 8.4 as well; please report back
such i can commit the fix to CVS.

best regards
-gustaf neumann

===================================================================
RCS file: /cvsroot/aolserver/aolserver/nsproxy/nsproxy.c,v
retrieving revision 1.1
diff -u -r1.1 nsproxy.c
--- nsproxy.c 19 Apr 2006 18:55:09 -0000 1.1
+++ nsproxy.c 7 Mar 2009 23:45:04 -0000
@@ -42,6 +42,7 @@
int
main(int argc, char **argv)
{
+ Tcl_FindExecutable(argv[0]);
return Ns_ProxyMain(argc, argv, MyInit);

Alexey Pechnikov

unread,
Mar 8, 2009, 5:14:25 AM3/8/09
to AOLS...@listserv.aol.com
Hello!

On Sunday 08 March 2009 02:51:21 Gustaf Neumann wrote:
> Dear Alexey,
>
> below is a fix for the nsproxy problem that you reported.
> The problem comes from a different initialization semantics
> in Tcl 8.5, that hits the nsproxy binary. The added call
> should work with Tcl 8.4 as well; please report back
> such i can commit the fix to CVS.

Patch really did solve the problem. I did test AOL4.5.1+Tcl8.5.6 build on one
my low-loaded productions server by 4 hour now and this work. Thank you very
much!

But I did find a few additional problems:

1. Some queries to nsproxy processes may produce zombie:

[08/Mar/2009:04:40:30][16835.3054869392][-nsproxy:close-] Warning: [shell]:
process 16961 won't die - sending sig 15
[08/Mar/2009:04:40:30][16835.3054869392][-nsproxy:close-] Warning: [shell]:
process 16961 won't die - sending sig 9
[08/Mar/2009:04:40:30][16835.3054869392][-nsproxy:close-] Warning: zombie:
16961

$ ps aux|grep 16961
www-data 16961 0.0 0.0 0 0 ? Z 04:40 0:00 [nsproxy]
<defunct>

$ ps aux|grep nsproxy
www-data 13956 0.0 0.0 11628 1952 ? Sl Mar07 0:00
/usr/lib/aolserver4/bin/nsproxy shell shell-proxy-1 print_doc
/tmp/fileCG1rsX/doc.odt} h {exec abiword $filename -t pdf} errmsg??catch {exec
so ...}
www-data 16961 0.0 0.0 0 0 ? Z 04:40 0:00 [nsproxy]
<defunct>
www-data 17076 0.0 0.0 14316 2464 ? Sl 04:41 0:00
/usr/lib/aolserver4/bin/nsproxy shell shell-proxy-0 print_pdf
/tmp/filexUJQil/doc.odt} h {exec abiword $filename -t pdf} errmsg??catch {exec
so ...}
veter 17535 0.0 0.0 3908 736 pts/0 S+ 04:44 0:00 grep nsproxy
www-data 24669 0.0 0.0 0 0 ? Z Mar07 0:00 [nsproxy]
<defunct>
www-data 24834 0.0 0.0 11628 1952 ? Sl Mar07 0:00
/usr/lib/aolserver4/bin/nsproxy shell shell-proxy-0 print_pdf
/tmp/fileYqgllZ/doc.odt} h {exec abiword $filename -t pdf} errmsg??catch {exec
so ...}

The problem is exists as for tcl8.5 as tcl8.4 builds of AOL+nsproxy.


2. Proxy processes have infinite live time and "waittimeout" is ignored.

I did start nsproxy some days ago on my production server and one process
exists now (tcl 8.4).
Now I'm testing nsproxy with tcl 8.5.

I did try
ns_proxy config myproxy -max 1 -getimeout 2000 -evaltimeout 4000

And I'm get result as:

[08/Mar/2009:04:04:21][16518.3060349840][-nssock:driver-] Notice: nssock:
listening on 10.0.2.15:8000
[08/Mar/2009:04:04:25][16518.3060210576][-default:0-] Notice: random:
generating 1 seed
[08/Mar/2009:04:04:25][16518.3060210576][-default:0-] Notice: encoding:
loaded: utf-8
proxy pid: 16528
main pid: 16518
195.122.250.12 - - [08/Mar/2009:04:04:25 +0300] "GET
/main.adp?menu=extension_reports_payments HTTP/1.1" 200 12096
195.122.250.12 - - [08/Mar/2009:04:04:25 +0300] "GET /styles/main/main.css
HTTP/1.1" 404 535
proxy pid: 16528
main pid: 16518
195.122.250.12 - - [08/Mar/2009:04:05:19 +0300] "GET
/main.adp?menu=extension_reports_payments HTTP/1.1" 200 12096
195.122.250.12 - - [08/Mar/2009:04:05:19 +0300] "GET /styles/main/main.css
HTTP/1.1" 404 535
[08/Mar/2009:04:07:04][16518.3060210576][-default:0-] Notice: exiting: timeout
waiting for connection
proxy pid: 16528
main pid: 16518
195.122.250.12 - - [08/Mar/2009:04:07:16 +0300] "GET
/main.adp?menu=extension_reports_payments HTTP/1.1" 200 12096
195.122.250.12 - - [08/Mar/2009:04:07:17 +0300] "GET /styles/main/main.css
HTTP/1.1" 404 535
proxy pid: 16528
main pid: 16518
195.122.250.12 - - [08/Mar/2009:04:08:08 +0300] "GET
/main.adp?menu=extension_reports_payments HTTP/1.1" 200 12096
195.122.250.12 - - [08/Mar/2009:04:08:08 +0300] "GET /styles/main/main.css
HTTP/1.1" 404 535

But default waittimeout must be equal to 100ms as described in
http://panoptic.com/wiki/aolserver/Nsproxy

And I did try

ns_proxy config myproxy -max 1 -getimeout 2000 -evaltimeout 4000 -waittimeout
1000

[08/Mar/2009:04:11:31][16545.3060657040][-nssock:driver-] Notice: nssock:
listening on 10.0.2.15:8000
[08/Mar/2009:04:11:33][16545.3060517776][-default:0-] Notice: random:
generating 1 seed
[08/Mar/2009:04:11:34][16545.3060517776][-default:0-] Notice: encoding:
loaded: utf-8
proxy pid: 16555
main pid: 16545
195.122.250.12 - - [08/Mar/2009:04:11:34 +0300] "GET
/main.adp?menu=extension_reports_payments HTTP/1.1" 200 12096
195.122.250.12 - - [08/Mar/2009:04:11:34 +0300] "GET /styles/main/main.css
HTTP/1.1" 404 535
proxy pid: 16555
main pid: 16545
195.122.250.12 - - [08/Mar/2009:04:11:51 +0300] "GET
/main.adp?menu=extension_reports_payments HTTP/1.1" 200 12096
195.122.250.12 - - [08/Mar/2009:04:11:52 +0300] "GET /styles/main/main.css
HTTP/1.1" 404 535
proxy pid: 16555
main pid: 16545
195.122.250.12 - - [08/Mar/2009:04:12:48 +0300] "GET
/main.adp?menu=extension_reports_payments HTTP/1.1" 200 12096
195.122.250.12 - - [08/Mar/2009:04:12:49 +0300] "GET /styles/main/main.css
HTTP/1.1" 404 535

So waittimeout is ignored. Am I right?

APD page code have section

ns_adp_puts [\
with-proxy myproxy {
puts "proxy pid: [ns_info pid]"
}]
puts "main pid: [ns_info pid]"

I did write wrapper for proxy as

proc with-proxy {proxy code} {
set handle [ns_proxy get $proxy]
set result [ns_proxy eval $handle $code]
ns_proxy release $handle
return $result
}

Infinite live time for proxy process is not problem but this behaviour is not
equal to documented.


Best regards.

Gustaf Neumann

unread,
Mar 8, 2009, 8:11:11 AM3/8/09
to AOLS...@listserv.aol.com
Alexey Pechnikov schrieb:

> Patch really did solve the problem. I did test AOL4.5.1+Tcl8.5.6 build on one
> my low-loaded productions server by 4 hour now and this work. Thank you very
> much!
>
Good to get confirmation. I have commited the changes for
both discussed problems (buffer overflow and 8.5 initialization problem)
to CVS HEAD at sourceforge.

> But I did find a few additional problems:
>
Currently, i have two tough deadlines, so i can't look into these in
more depth.
It might be a good idea to report the two bugs on the tracker to keep
them on the radar
http://sourceforge.net/tracker2/?func=browse&group_id=3152&atid=103152

-gustaf neumann

Reply all
Reply to author
Forward
0 new messages