From ochs at marcochs.com Fri Nov 2 19:58:57 2012 From: ochs at marcochs.com (Marc Ochs) Date: Fri, 2 Nov 2012 15:58:57 -0400 Subject: dirty trick and blank 503 after grace Message-ID: Sorry if I missed this somewhere. I'm testing doing the "dirty trick" http://www.gossamer-threads.com/lists/varnish/misc/18659 to serve-stale when no backends are up in 3.0.2. This is working for me, and I can serve stale contant up to grace. The issue I'm seeing now is that I get a blank 503 after grace, not the nice "Guru Meditation" page. Do I just have to redefine the error? Or is this unavoidable? Thanks, Marc -------------- next part -------------- An HTML attachment was scrubbed... URL: From luis.sanmartin at unix.cl Mon Nov 5 12:33:32 2012 From: luis.sanmartin at unix.cl (Luis San Martin) Date: Mon, 5 Nov 2012 09:33:32 -0300 Subject: varnish 2.1.5 on ia64 Message-ID: Hello, I've been trying to get up and running varnish 2.1.5 on ia64 without any success. So far I've tried debian package and varnish from source. Both with the same results. I attach strace file if needed. I appreciate any feedback or ideas since I can't find any clue. P.S: Base system is an SGI Altix 450 && Debian 6.0 Squeeze Kind regards # varnishd -f /usr/etc/varnish/default.vcl -d Running VCC-compiler failed, signal 11 VCL compilation failed # cat /usr/etc/varnish/default.vcl backend default { .host = "127.0.0.1"; .port = "8080"; } # varnishd -V varnishd (varnish-2.1.5 SVN ) Copyright (c) 2006-2009 Linpro AS / Verdens Gang AS # uname -a Linux mansotarro1 2.6.32-5-mckinley #1 SMP Sun Sep 23 11:51:42 UTC 2012 ia64 GNU/Linux # gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/ia64-linux-gnu/4.6/lto-wrapper Target: ia64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.3-12' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libssp --enable-plugin --enable-objc-gc --with-system-libunwind --enable-checking=release --build=ia64-linux-gnu --host=ia64-linux-gnu --target=ia64-linux-gnu Thread model: posix gcc version 4.6.3 (Debian 4.6.3-12) -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- execve("/usr/sbin/varnishd", ["varnishd", "-f", "/usr/etc/varnish/default.vcl"], [/* 16 vars */]) = 0 brk(0) = 0x6000000000020000 uname({sys="Linux", node="mansotarro1", ...}) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=15068, ...}) = 0 mmap(NULL, 15068, PROT_READ, MAP_PRIVATE, 3, 0) = 0x200000000003c000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/usr/lib/libvarnish.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\200O\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=285548, ...}) = 0 mmap(NULL, 216208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2000000000054000 mprotect(0x2000000000078000, 49152, PROT_NONE) = 0 mmap(0x2000000000084000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x20000) = 0x2000000000084000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/usr/lib/libvarnishcompat.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0@\n\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=16090, ...}) = 0 mmap(NULL, 71608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x200000000008c000 mprotect(0x2000000000090000, 49152, PROT_NONE) = 0 mmap(0x200000000009c000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x200000000009c000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/usr/lib/libvcl.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0 at K\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=335159, ...}) = 0 mmap(NULL, 259168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x20000000000a0000 mprotect(0x20000000000d0000, 49152, PROT_NONE) = 0 mmap(0x20000000000dc000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2c000) = 0x20000000000dc000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/libdl.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\200\24\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=20808, ...}) = 0 mmap(NULL, 83904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x20000000000e0000 mprotect(0x20000000000e8000, 49152, PROT_NONE) = 0 mmap(0x20000000000f4000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x20000000000f4000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/libpthread.so.0", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\0z\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=212602, ...}) = 0 mmap(NULL, 260384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x20000000000f8000 mprotect(0x2000000000124000, 49152, PROT_NONE) = 0 mmap(0x2000000000130000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x2000000000130000 mmap(0x2000000000134000, 14624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2000000000134000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/libnsl.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0 at Y\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=165688, ...}) = 0 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000138000 mmap(NULL, 238392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x200000000013c000 mprotect(0x2000000000164000, 49152, PROT_NONE) = 0 mmap(0x2000000000170000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24000) = 0x2000000000170000 mmap(0x2000000000174000, 9016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2000000000174000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/libm.so.6.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\300L\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=778720, ...}) = 0 mmap(NULL, 841808, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2000000000178000 mprotect(0x2000000000238000, 49152, PROT_NONE) = 0 mmap(0x2000000000244000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xbc000) = 0x2000000000244000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/usr/lib/libunwind.so.7", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\240\"\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=116960, ...}) = 0 mmap(NULL, 305640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2000000000248000 mprotect(0x2000000000264000, 49152, PROT_NONE) = 0 mmap(0x2000000000270000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x2000000000270000 mmap(0x2000000000278000, 109032, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2000000000278000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/libc.so.6.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\200K\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=2604480, ...}) = 0 mmap(NULL, 2684936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2000000000294000 mprotect(0x200000000050c000, 49152, PROT_NONE) = 0 mmap(0x2000000000518000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x274000) = 0x2000000000518000 mmap(0x2000000000520000, 14344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2000000000520000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/librt.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0 at .\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=58008, ...}) = 0 mmap(NULL, 123176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2000000000524000 mprotect(0x2000000000534000, 49152, PROT_NONE) = 0 mmap(0x2000000000540000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x2000000000540000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/libpcre.so.3", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\0\37\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=519600, ...}) = 0 mmap(NULL, 582848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2000000000544000 mprotect(0x20000000005c4000, 49152, PROT_NONE) = 0 mmap(0x20000000005d0000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7c000) = 0x20000000005d0000 close(3) = 0 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005d4000 mmap(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005d8000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005e0000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005e4000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005e8000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005ec000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005f0000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005f4000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005f8000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000000005fc000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000600000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000604000 munmap(0x200000000003c000, 15068) = 0 set_tid_address(0x200000000013b0a0) = 5979 get_robust_list(0x200000000013b0b0, 0x18, 0x4000000000000040) = 0 futex(0x60000fffffc9fb90, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 60000fffffc9fd00) = -1 EAGAIN (Resource temporarily unavailable) rt_sigaction(SIGRTMIN, {0x200000000004d510, [], SA_SIGINFO}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x200000000004d520, [], 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 getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0 close(1024) = -1 EBADF (Bad file descriptor) close(1023) = -1 EBADF (Bad file descriptor) close(1022) = -1 EBADF (Bad file descriptor) close(1021) = -1 EBADF (Bad file descriptor) close(1020) = -1 EBADF (Bad file descriptor) close(1019) = -1 EBADF (Bad file descriptor) close(1018) = -1 EBADF (Bad file descriptor) close(1017) = -1 EBADF (Bad file descriptor) close(1016) = -1 EBADF (Bad file descriptor) close(1015) = -1 EBADF (Bad file descriptor) close(1014) = -1 EBADF (Bad file descriptor) close(1013) = -1 EBADF (Bad file descriptor) close(1012) = -1 EBADF (Bad file descriptor) close(1011) = -1 EBADF (Bad file descriptor) close(1010) = -1 EBADF (Bad file descriptor) close(1009) = -1 EBADF (Bad file descriptor) close(1008) = -1 EBADF (Bad file descriptor) close(1007) = -1 EBADF (Bad file descriptor) close(1006) = -1 EBADF (Bad file descriptor) close(1005) = -1 EBADF (Bad file descriptor) close(1004) = -1 EBADF (Bad file descriptor) close(1003) = -1 EBADF (Bad file descriptor) close(1002) = -1 EBADF (Bad file descriptor) close(1001) = -1 EBADF (Bad file descriptor) close(1000) = -1 EBADF (Bad file descriptor) close(999) = -1 EBADF (Bad file descriptor) close(998) = -1 EBADF (Bad file descriptor) close(997) = -1 EBADF (Bad file descriptor) close(996) = -1 EBADF (Bad file descriptor) close(995) = -1 EBADF (Bad file descriptor) close(994) = -1 EBADF (Bad file descriptor) close(993) = -1 EBADF (Bad file descriptor) close(992) = -1 EBADF (Bad file descriptor) close(991) = -1 EBADF (Bad file descriptor) close(990) = -1 EBADF (Bad file descriptor) close(989) = -1 EBADF (Bad file descriptor) close(988) = -1 EBADF (Bad file descriptor) close(987) = -1 EBADF (Bad file descriptor) close(986) = -1 EBADF (Bad file descriptor) close(985) = -1 EBADF (Bad file descriptor) close(984) = -1 EBADF (Bad file descriptor) close(983) = -1 EBADF (Bad file descriptor) close(982) = -1 EBADF (Bad file descriptor) close(981) = -1 EBADF (Bad file descriptor) close(980) = -1 EBADF (Bad file descriptor) close(979) = -1 EBADF (Bad file descriptor) close(978) = -1 EBADF (Bad file descriptor) close(977) = -1 EBADF (Bad file descriptor) close(976) = -1 EBADF (Bad file descriptor) close(975) = -1 EBADF (Bad file descriptor) close(974) = -1 EBADF (Bad file descriptor) close(973) = -1 EBADF (Bad file descriptor) close(972) = -1 EBADF (Bad file descriptor) close(971) = -1 EBADF (Bad file descriptor) close(970) = -1 EBADF (Bad file descriptor) close(969) = -1 EBADF (Bad file descriptor) close(968) = -1 EBADF (Bad file descriptor) close(967) = -1 EBADF (Bad file descriptor) close(966) = -1 EBADF (Bad file descriptor) close(965) = -1 EBADF (Bad file descriptor) close(964) = -1 EBADF (Bad file descriptor) close(963) = -1 EBADF (Bad file descriptor) close(962) = -1 EBADF (Bad file descriptor) close(961) = -1 EBADF (Bad file descriptor) close(960) = -1 EBADF (Bad file descriptor) close(959) = -1 EBADF (Bad file descriptor) close(958) = -1 EBADF (Bad file descriptor) close(957) = -1 EBADF (Bad file descriptor) close(956) = -1 EBADF (Bad file descriptor) close(955) = -1 EBADF (Bad file descriptor) close(954) = -1 EBADF (Bad file descriptor) close(953) = -1 EBADF (Bad file descriptor) close(952) = -1 EBADF (Bad file descriptor) close(951) = -1 EBADF (Bad file descriptor) close(950) = -1 EBADF (Bad file descriptor) close(949) = -1 EBADF (Bad file descriptor) close(948) = -1 EBADF (Bad file descriptor) close(947) = -1 EBADF (Bad file descriptor) close(946) = -1 EBADF (Bad file descriptor) close(945) = -1 EBADF (Bad file descriptor) close(944) = -1 EBADF (Bad file descriptor) close(943) = -1 EBADF (Bad file descriptor) close(942) = -1 EBADF (Bad file descriptor) close(941) = -1 EBADF (Bad file descriptor) close(940) = -1 EBADF (Bad file descriptor) close(939) = -1 EBADF (Bad file descriptor) close(938) = -1 EBADF (Bad file descriptor) close(937) = -1 EBADF (Bad file descriptor) close(936) = -1 EBADF (Bad file descriptor) close(935) = -1 EBADF (Bad file descriptor) close(934) = -1 EBADF (Bad file descriptor) close(933) = -1 EBADF (Bad file descriptor) close(932) = -1 EBADF (Bad file descriptor) close(931) = -1 EBADF (Bad file descriptor) close(930) = -1 EBADF (Bad file descriptor) close(929) = -1 EBADF (Bad file descriptor) close(928) = -1 EBADF (Bad file descriptor) close(927) = -1 EBADF (Bad file descriptor) close(926) = -1 EBADF (Bad file descriptor) close(925) = -1 EBADF (Bad file descriptor) close(924) = -1 EBADF (Bad file descriptor) close(923) = -1 EBADF (Bad file descriptor) close(922) = -1 EBADF (Bad file descriptor) close(921) = -1 EBADF (Bad file descriptor) close(920) = -1 EBADF (Bad file descriptor) close(919) = -1 EBADF (Bad file descriptor) close(918) = -1 EBADF (Bad file descriptor) close(917) = -1 EBADF (Bad file descriptor) close(916) = -1 EBADF (Bad file descriptor) close(915) = -1 EBADF (Bad file descriptor) close(914) = -1 EBADF (Bad file descriptor) close(913) = -1 EBADF (Bad file descriptor) close(912) = -1 EBADF (Bad file descriptor) close(911) = -1 EBADF (Bad file descriptor) close(910) = -1 EBADF (Bad file descriptor) close(909) = -1 EBADF (Bad file descriptor) close(908) = -1 EBADF (Bad file descriptor) close(907) = -1 EBADF (Bad file descriptor) close(906) = -1 EBADF (Bad file descriptor) close(905) = -1 EBADF (Bad file descriptor) close(904) = -1 EBADF (Bad file descriptor) close(903) = -1 EBADF (Bad file descriptor) close(902) = -1 EBADF (Bad file descriptor) close(901) = -1 EBADF (Bad file descriptor) close(900) = -1 EBADF (Bad file descriptor) close(899) = -1 EBADF (Bad file descriptor) close(898) = -1 EBADF (Bad file descriptor) close(897) = -1 EBADF (Bad file descriptor) close(896) = -1 EBADF (Bad file descriptor) close(895) = -1 EBADF (Bad file descriptor) close(894) = -1 EBADF (Bad file descriptor) close(893) = -1 EBADF (Bad file descriptor) close(892) = -1 EBADF (Bad file descriptor) close(891) = -1 EBADF (Bad file descriptor) close(890) = -1 EBADF (Bad file descriptor) close(889) = -1 EBADF (Bad file descriptor) close(888) = -1 EBADF (Bad file descriptor) close(887) = -1 EBADF (Bad file descriptor) close(886) = -1 EBADF (Bad file descriptor) close(885) = -1 EBADF (Bad file descriptor) close(884) = -1 EBADF (Bad file descriptor) close(883) = -1 EBADF (Bad file descriptor) close(882) = -1 EBADF (Bad file descriptor) close(881) = -1 EBADF (Bad file descriptor) close(880) = -1 EBADF (Bad file descriptor) close(879) = -1 EBADF (Bad file descriptor) close(878) = -1 EBADF (Bad file descriptor) close(877) = -1 EBADF (Bad file descriptor) close(876) = -1 EBADF (Bad file descriptor) close(875) = -1 EBADF (Bad file descriptor) close(874) = -1 EBADF (Bad file descriptor) close(873) = -1 EBADF (Bad file descriptor) close(872) = -1 EBADF (Bad file descriptor) close(871) = -1 EBADF (Bad file descriptor) close(870) = -1 EBADF (Bad file descriptor) close(869) = -1 EBADF (Bad file descriptor) close(868) = -1 EBADF (Bad file descriptor) close(867) = -1 EBADF (Bad file descriptor) close(866) = -1 EBADF (Bad file descriptor) close(865) = -1 EBADF (Bad file descriptor) close(864) = -1 EBADF (Bad file descriptor) close(863) = -1 EBADF (Bad file descriptor) close(862) = -1 EBADF (Bad file descriptor) close(861) = -1 EBADF (Bad file descriptor) close(860) = -1 EBADF (Bad file descriptor) close(859) = -1 EBADF (Bad file descriptor) close(858) = -1 EBADF (Bad file descriptor) close(857) = -1 EBADF (Bad file descriptor) close(856) = -1 EBADF (Bad file descriptor) close(855) = -1 EBADF (Bad file descriptor) close(854) = -1 EBADF (Bad file descriptor) close(853) = -1 EBADF (Bad file descriptor) close(852) = -1 EBADF (Bad file descriptor) close(851) = -1 EBADF (Bad file descriptor) close(850) = -1 EBADF (Bad file descriptor) close(849) = -1 EBADF (Bad file descriptor) close(848) = -1 EBADF (Bad file descriptor) close(847) = -1 EBADF (Bad file descriptor) close(846) = -1 EBADF (Bad file descriptor) close(845) = -1 EBADF (Bad file descriptor) close(844) = -1 EBADF (Bad file descriptor) close(843) = -1 EBADF (Bad file descriptor) close(842) = -1 EBADF (Bad file descriptor) close(841) = -1 EBADF (Bad file descriptor) close(840) = -1 EBADF (Bad file descriptor) close(839) = -1 EBADF (Bad file descriptor) close(838) = -1 EBADF (Bad file descriptor) close(837) = -1 EBADF (Bad file descriptor) close(836) = -1 EBADF (Bad file descriptor) close(835) = -1 EBADF (Bad file descriptor) close(834) = -1 EBADF (Bad file descriptor) close(833) = -1 EBADF (Bad file descriptor) close(832) = -1 EBADF (Bad file descriptor) close(831) = -1 EBADF (Bad file descriptor) close(830) = -1 EBADF (Bad file descriptor) close(829) = -1 EBADF (Bad file descriptor) close(828) = -1 EBADF (Bad file descriptor) close(827) = -1 EBADF (Bad file descriptor) close(826) = -1 EBADF (Bad file descriptor) close(825) = -1 EBADF (Bad file descriptor) close(824) = -1 EBADF (Bad file descriptor) close(823) = -1 EBADF (Bad file descriptor) close(822) = -1 EBADF (Bad file descriptor) close(821) = -1 EBADF (Bad file descriptor) close(820) = -1 EBADF (Bad file descriptor) close(819) = -1 EBADF (Bad file descriptor) close(818) = -1 EBADF (Bad file descriptor) close(817) = -1 EBADF (Bad file descriptor) close(816) = -1 EBADF (Bad file descriptor) close(815) = -1 EBADF (Bad file descriptor) close(814) = -1 EBADF (Bad file descriptor) close(813) = -1 EBADF (Bad file descriptor) close(812) = -1 EBADF (Bad file descriptor) close(811) = -1 EBADF (Bad file descriptor) close(810) = -1 EBADF (Bad file descriptor) close(809) = -1 EBADF (Bad file descriptor) close(808) = -1 EBADF (Bad file descriptor) close(807) = -1 EBADF (Bad file descriptor) close(806) = -1 EBADF (Bad file descriptor) close(805) = -1 EBADF (Bad file descriptor) close(804) = -1 EBADF (Bad file descriptor) close(803) = -1 EBADF (Bad file descriptor) close(802) = -1 EBADF (Bad file descriptor) close(801) = -1 EBADF (Bad file descriptor) close(800) = -1 EBADF (Bad file descriptor) close(799) = -1 EBADF (Bad file descriptor) close(798) = -1 EBADF (Bad file descriptor) close(797) = -1 EBADF (Bad file descriptor) close(796) = -1 EBADF (Bad file descriptor) close(795) = -1 EBADF (Bad file descriptor) close(794) = -1 EBADF (Bad file descriptor) close(793) = -1 EBADF (Bad file descriptor) close(792) = -1 EBADF (Bad file descriptor) close(791) = -1 EBADF (Bad file descriptor) close(790) = -1 EBADF (Bad file descriptor) close(789) = -1 EBADF (Bad file descriptor) close(788) = -1 EBADF (Bad file descriptor) close(787) = -1 EBADF (Bad file descriptor) close(786) = -1 EBADF (Bad file descriptor) close(785) = -1 EBADF (Bad file descriptor) close(784) = -1 EBADF (Bad file descriptor) close(783) = -1 EBADF (Bad file descriptor) close(782) = -1 EBADF (Bad file descriptor) close(781) = -1 EBADF (Bad file descriptor) close(780) = -1 EBADF (Bad file descriptor) close(779) = -1 EBADF (Bad file descriptor) close(778) = -1 EBADF (Bad file descriptor) close(777) = -1 EBADF (Bad file descriptor) close(776) = -1 EBADF (Bad file descriptor) close(775) = -1 EBADF (Bad file descriptor) close(774) = -1 EBADF (Bad file descriptor) close(773) = -1 EBADF (Bad file descriptor) close(772) = -1 EBADF (Bad file descriptor) close(771) = -1 EBADF (Bad file descriptor) close(770) = -1 EBADF (Bad file descriptor) close(769) = -1 EBADF (Bad file descriptor) close(768) = -1 EBADF (Bad file descriptor) close(767) = -1 EBADF (Bad file descriptor) close(766) = -1 EBADF (Bad file descriptor) close(765) = -1 EBADF (Bad file descriptor) close(764) = -1 EBADF (Bad file descriptor) close(763) = -1 EBADF (Bad file descriptor) close(762) = -1 EBADF (Bad file descriptor) close(761) = -1 EBADF (Bad file descriptor) close(760) = -1 EBADF (Bad file descriptor) close(759) = -1 EBADF (Bad file descriptor) close(758) = -1 EBADF (Bad file descriptor) close(757) = -1 EBADF (Bad file descriptor) close(756) = -1 EBADF (Bad file descriptor) close(755) = -1 EBADF (Bad file descriptor) close(754) = -1 EBADF (Bad file descriptor) close(753) = -1 EBADF (Bad file descriptor) close(752) = -1 EBADF (Bad file descriptor) close(751) = -1 EBADF (Bad file descriptor) close(750) = -1 EBADF (Bad file descriptor) close(749) = -1 EBADF (Bad file descriptor) close(748) = -1 EBADF (Bad file descriptor) close(747) = -1 EBADF (Bad file descriptor) close(746) = -1 EBADF (Bad file descriptor) close(745) = -1 EBADF (Bad file descriptor) close(744) = -1 EBADF (Bad file descriptor) close(743) = -1 EBADF (Bad file descriptor) close(742) = -1 EBADF (Bad file descriptor) close(741) = -1 EBADF (Bad file descriptor) close(740) = -1 EBADF (Bad file descriptor) close(739) = -1 EBADF (Bad file descriptor) close(738) = -1 EBADF (Bad file descriptor) close(737) = -1 EBADF (Bad file descriptor) close(736) = -1 EBADF (Bad file descriptor) close(735) = -1 EBADF (Bad file descriptor) close(734) = -1 EBADF (Bad file descriptor) close(733) = -1 EBADF (Bad file descriptor) close(732) = -1 EBADF (Bad file descriptor) close(731) = -1 EBADF (Bad file descriptor) close(730) = -1 EBADF (Bad file descriptor) close(729) = -1 EBADF (Bad file descriptor) close(728) = -1 EBADF (Bad file descriptor) close(727) = -1 EBADF (Bad file descriptor) close(726) = -1 EBADF (Bad file descriptor) close(725) = -1 EBADF (Bad file descriptor) close(724) = -1 EBADF (Bad file descriptor) close(723) = -1 EBADF (Bad file descriptor) close(722) = -1 EBADF (Bad file descriptor) close(721) = -1 EBADF (Bad file descriptor) close(720) = -1 EBADF (Bad file descriptor) close(719) = -1 EBADF (Bad file descriptor) close(718) = -1 EBADF (Bad file descriptor) close(717) = -1 EBADF (Bad file descriptor) close(716) = -1 EBADF (Bad file descriptor) close(715) = -1 EBADF (Bad file descriptor) close(714) = -1 EBADF (Bad file descriptor) close(713) = -1 EBADF (Bad file descriptor) close(712) = -1 EBADF (Bad file descriptor) close(711) = -1 EBADF (Bad file descriptor) close(710) = -1 EBADF (Bad file descriptor) close(709) = -1 EBADF (Bad file descriptor) close(708) = -1 EBADF (Bad file descriptor) close(707) = -1 EBADF (Bad file descriptor) close(706) = -1 EBADF (Bad file descriptor) close(705) = -1 EBADF (Bad file descriptor) close(704) = -1 EBADF (Bad file descriptor) close(703) = -1 EBADF (Bad file descriptor) close(702) = -1 EBADF (Bad file descriptor) close(701) = -1 EBADF (Bad file descriptor) close(700) = -1 EBADF (Bad file descriptor) close(699) = -1 EBADF (Bad file descriptor) close(698) = -1 EBADF (Bad file descriptor) close(697) = -1 EBADF (Bad file descriptor) close(696) = -1 EBADF (Bad file descriptor) close(695) = -1 EBADF (Bad file descriptor) close(694) = -1 EBADF (Bad file descriptor) close(693) = -1 EBADF (Bad file descriptor) close(692) = -1 EBADF (Bad file descriptor) close(691) = -1 EBADF (Bad file descriptor) close(690) = -1 EBADF (Bad file descriptor) close(689) = -1 EBADF (Bad file descriptor) close(688) = -1 EBADF (Bad file descriptor) close(687) = -1 EBADF (Bad file descriptor) close(686) = -1 EBADF (Bad file descriptor) close(685) = -1 EBADF (Bad file descriptor) close(684) = -1 EBADF (Bad file descriptor) close(683) = -1 EBADF (Bad file descriptor) close(682) = -1 EBADF (Bad file descriptor) close(681) = -1 EBADF (Bad file descriptor) close(680) = -1 EBADF (Bad file descriptor) close(679) = -1 EBADF (Bad file descriptor) close(678) = -1 EBADF (Bad file descriptor) close(677) = -1 EBADF (Bad file descriptor) close(676) = -1 EBADF (Bad file descriptor) close(675) = -1 EBADF (Bad file descriptor) close(674) = -1 EBADF (Bad file descriptor) close(673) = -1 EBADF (Bad file descriptor) close(672) = -1 EBADF (Bad file descriptor) close(671) = -1 EBADF (Bad file descriptor) close(670) = -1 EBADF (Bad file descriptor) close(669) = -1 EBADF (Bad file descriptor) close(668) = -1 EBADF (Bad file descriptor) close(667) = -1 EBADF (Bad file descriptor) close(666) = -1 EBADF (Bad file descriptor) close(665) = -1 EBADF (Bad file descriptor) close(664) = -1 EBADF (Bad file descriptor) close(663) = -1 EBADF (Bad file descriptor) close(662) = -1 EBADF (Bad file descriptor) close(661) = -1 EBADF (Bad file descriptor) close(660) = -1 EBADF (Bad file descriptor) close(659) = -1 EBADF (Bad file descriptor) close(658) = -1 EBADF (Bad file descriptor) close(657) = -1 EBADF (Bad file descriptor) close(656) = -1 EBADF (Bad file descriptor) close(655) = -1 EBADF (Bad file descriptor) close(654) = -1 EBADF (Bad file descriptor) close(653) = -1 EBADF (Bad file descriptor) close(652) = -1 EBADF (Bad file descriptor) close(651) = -1 EBADF (Bad file descriptor) close(650) = -1 EBADF (Bad file descriptor) close(649) = -1 EBADF (Bad file descriptor) close(648) = -1 EBADF (Bad file descriptor) close(647) = -1 EBADF (Bad file descriptor) close(646) = -1 EBADF (Bad file descriptor) close(645) = -1 EBADF (Bad file descriptor) close(644) = -1 EBADF (Bad file descriptor) close(643) = -1 EBADF (Bad file descriptor) close(642) = -1 EBADF (Bad file descriptor) close(641) = -1 EBADF (Bad file descriptor) close(640) = -1 EBADF (Bad file descriptor) close(639) = -1 EBADF (Bad file descriptor) close(638) = -1 EBADF (Bad file descriptor) close(637) = -1 EBADF (Bad file descriptor) close(636) = -1 EBADF (Bad file descriptor) close(635) = -1 EBADF (Bad file descriptor) close(634) = -1 EBADF (Bad file descriptor) close(633) = -1 EBADF (Bad file descriptor) close(632) = -1 EBADF (Bad file descriptor) close(631) = -1 EBADF (Bad file descriptor) close(630) = -1 EBADF (Bad file descriptor) close(629) = -1 EBADF (Bad file descriptor) close(628) = -1 EBADF (Bad file descriptor) close(627) = -1 EBADF (Bad file descriptor) close(626) = -1 EBADF (Bad file descriptor) close(625) = -1 EBADF (Bad file descriptor) close(624) = -1 EBADF (Bad file descriptor) close(623) = -1 EBADF (Bad file descriptor) close(622) = -1 EBADF (Bad file descriptor) close(621) = -1 EBADF (Bad file descriptor) close(620) = -1 EBADF (Bad file descriptor) close(619) = -1 EBADF (Bad file descriptor) close(618) = -1 EBADF (Bad file descriptor) close(617) = -1 EBADF (Bad file descriptor) close(616) = -1 EBADF (Bad file descriptor) close(615) = -1 EBADF (Bad file descriptor) close(614) = -1 EBADF (Bad file descriptor) close(613) = -1 EBADF (Bad file descriptor) close(612) = -1 EBADF (Bad file descriptor) close(611) = -1 EBADF (Bad file descriptor) close(610) = -1 EBADF (Bad file descriptor) close(609) = -1 EBADF (Bad file descriptor) close(608) = -1 EBADF (Bad file descriptor) close(607) = -1 EBADF (Bad file descriptor) close(606) = -1 EBADF (Bad file descriptor) close(605) = -1 EBADF (Bad file descriptor) close(604) = -1 EBADF (Bad file descriptor) close(603) = -1 EBADF (Bad file descriptor) close(602) = -1 EBADF (Bad file descriptor) close(601) = -1 EBADF (Bad file descriptor) close(600) = -1 EBADF (Bad file descriptor) close(599) = -1 EBADF (Bad file descriptor) close(598) = -1 EBADF (Bad file descriptor) close(597) = -1 EBADF (Bad file descriptor) close(596) = -1 EBADF (Bad file descriptor) close(595) = -1 EBADF (Bad file descriptor) close(594) = -1 EBADF (Bad file descriptor) close(593) = -1 EBADF (Bad file descriptor) close(592) = -1 EBADF (Bad file descriptor) close(591) = -1 EBADF (Bad file descriptor) close(590) = -1 EBADF (Bad file descriptor) close(589) = -1 EBADF (Bad file descriptor) close(588) = -1 EBADF (Bad file descriptor) close(587) = -1 EBADF (Bad file descriptor) close(586) = -1 EBADF (Bad file descriptor) close(585) = -1 EBADF (Bad file descriptor) close(584) = -1 EBADF (Bad file descriptor) close(583) = -1 EBADF (Bad file descriptor) close(582) = -1 EBADF (Bad file descriptor) close(581) = -1 EBADF (Bad file descriptor) close(580) = -1 EBADF (Bad file descriptor) close(579) = -1 EBADF (Bad file descriptor) close(578) = -1 EBADF (Bad file descriptor) close(577) = -1 EBADF (Bad file descriptor) close(576) = -1 EBADF (Bad file descriptor) close(575) = -1 EBADF (Bad file descriptor) close(574) = -1 EBADF (Bad file descriptor) close(573) = -1 EBADF (Bad file descriptor) close(572) = -1 EBADF (Bad file descriptor) close(571) = -1 EBADF (Bad file descriptor) close(570) = -1 EBADF (Bad file descriptor) close(569) = -1 EBADF (Bad file descriptor) close(568) = -1 EBADF (Bad file descriptor) close(567) = -1 EBADF (Bad file descriptor) close(566) = -1 EBADF (Bad file descriptor) close(565) = -1 EBADF (Bad file descriptor) close(564) = -1 EBADF (Bad file descriptor) close(563) = -1 EBADF (Bad file descriptor) close(562) = -1 EBADF (Bad file descriptor) close(561) = -1 EBADF (Bad file descriptor) close(560) = -1 EBADF (Bad file descriptor) close(559) = -1 EBADF (Bad file descriptor) close(558) = -1 EBADF (Bad file descriptor) close(557) = -1 EBADF (Bad file descriptor) close(556) = -1 EBADF (Bad file descriptor) close(555) = -1 EBADF (Bad file descriptor) close(554) = -1 EBADF (Bad file descriptor) close(553) = -1 EBADF (Bad file descriptor) close(552) = -1 EBADF (Bad file descriptor) close(551) = -1 EBADF (Bad file descriptor) close(550) = -1 EBADF (Bad file descriptor) close(549) = -1 EBADF (Bad file descriptor) close(548) = -1 EBADF (Bad file descriptor) close(547) = -1 EBADF (Bad file descriptor) close(546) = -1 EBADF (Bad file descriptor) close(545) = -1 EBADF (Bad file descriptor) close(544) = -1 EBADF (Bad file descriptor) close(543) = -1 EBADF (Bad file descriptor) close(542) = -1 EBADF (Bad file descriptor) close(541) = -1 EBADF (Bad file descriptor) close(540) = -1 EBADF (Bad file descriptor) close(539) = -1 EBADF (Bad file descriptor) close(538) = -1 EBADF (Bad file descriptor) close(537) = -1 EBADF (Bad file descriptor) close(536) = -1 EBADF (Bad file descriptor) close(535) = -1 EBADF (Bad file descriptor) close(534) = -1 EBADF (Bad file descriptor) close(533) = -1 EBADF (Bad file descriptor) close(532) = -1 EBADF (Bad file descriptor) close(531) = -1 EBADF (Bad file descriptor) close(530) = -1 EBADF (Bad file descriptor) close(529) = -1 EBADF (Bad file descriptor) close(528) = -1 EBADF (Bad file descriptor) close(527) = -1 EBADF (Bad file descriptor) close(526) = -1 EBADF (Bad file descriptor) close(525) = -1 EBADF (Bad file descriptor) close(524) = -1 EBADF (Bad file descriptor) close(523) = -1 EBADF (Bad file descriptor) close(522) = -1 EBADF (Bad file descriptor) close(521) = -1 EBADF (Bad file descriptor) close(520) = -1 EBADF (Bad file descriptor) close(519) = -1 EBADF (Bad file descriptor) close(518) = -1 EBADF (Bad file descriptor) close(517) = -1 EBADF (Bad file descriptor) close(516) = -1 EBADF (Bad file descriptor) close(515) = -1 EBADF (Bad file descriptor) close(514) = -1 EBADF (Bad file descriptor) close(513) = -1 EBADF (Bad file descriptor) close(512) = -1 EBADF (Bad file descriptor) close(511) = -1 EBADF (Bad file descriptor) close(510) = -1 EBADF (Bad file descriptor) close(509) = -1 EBADF (Bad file descriptor) close(508) = -1 EBADF (Bad file descriptor) close(507) = -1 EBADF (Bad file descriptor) close(506) = -1 EBADF (Bad file descriptor) close(505) = -1 EBADF (Bad file descriptor) close(504) = -1 EBADF (Bad file descriptor) close(503) = -1 EBADF (Bad file descriptor) close(502) = -1 EBADF (Bad file descriptor) close(501) = -1 EBADF (Bad file descriptor) close(500) = -1 EBADF (Bad file descriptor) close(499) = -1 EBADF (Bad file descriptor) close(498) = -1 EBADF (Bad file descriptor) close(497) = -1 EBADF (Bad file descriptor) close(496) = -1 EBADF (Bad file descriptor) close(495) = -1 EBADF (Bad file descriptor) close(494) = -1 EBADF (Bad file descriptor) close(493) = -1 EBADF (Bad file descriptor) close(492) = -1 EBADF (Bad file descriptor) close(491) = -1 EBADF (Bad file descriptor) close(490) = -1 EBADF (Bad file descriptor) close(489) = -1 EBADF (Bad file descriptor) close(488) = -1 EBADF (Bad file descriptor) close(487) = -1 EBADF (Bad file descriptor) close(486) = -1 EBADF (Bad file descriptor) close(485) = -1 EBADF (Bad file descriptor) close(484) = -1 EBADF (Bad file descriptor) close(483) = -1 EBADF (Bad file descriptor) close(482) = -1 EBADF (Bad file descriptor) close(481) = -1 EBADF (Bad file descriptor) close(480) = -1 EBADF (Bad file descriptor) close(479) = -1 EBADF (Bad file descriptor) close(478) = -1 EBADF (Bad file descriptor) close(477) = -1 EBADF (Bad file descriptor) close(476) = -1 EBADF (Bad file descriptor) close(475) = -1 EBADF (Bad file descriptor) close(474) = -1 EBADF (Bad file descriptor) close(473) = -1 EBADF (Bad file descriptor) close(472) = -1 EBADF (Bad file descriptor) close(471) = -1 EBADF (Bad file descriptor) close(470) = -1 EBADF (Bad file descriptor) close(469) = -1 EBADF (Bad file descriptor) close(468) = -1 EBADF (Bad file descriptor) close(467) = -1 EBADF (Bad file descriptor) close(466) = -1 EBADF (Bad file descriptor) close(465) = -1 EBADF (Bad file descriptor) close(464) = -1 EBADF (Bad file descriptor) close(463) = -1 EBADF (Bad file descriptor) close(462) = -1 EBADF (Bad file descriptor) close(461) = -1 EBADF (Bad file descriptor) close(460) = -1 EBADF (Bad file descriptor) close(459) = -1 EBADF (Bad file descriptor) close(458) = -1 EBADF (Bad file descriptor) close(457) = -1 EBADF (Bad file descriptor) close(456) = -1 EBADF (Bad file descriptor) close(455) = -1 EBADF (Bad file descriptor) close(454) = -1 EBADF (Bad file descriptor) close(453) = -1 EBADF (Bad file descriptor) close(452) = -1 EBADF (Bad file descriptor) close(451) = -1 EBADF (Bad file descriptor) close(450) = -1 EBADF (Bad file descriptor) close(449) = -1 EBADF (Bad file descriptor) close(448) = -1 EBADF (Bad file descriptor) close(447) = -1 EBADF (Bad file descriptor) close(446) = -1 EBADF (Bad file descriptor) close(445) = -1 EBADF (Bad file descriptor) close(444) = -1 EBADF (Bad file descriptor) close(443) = -1 EBADF (Bad file descriptor) close(442) = -1 EBADF (Bad file descriptor) close(441) = -1 EBADF (Bad file descriptor) close(440) = -1 EBADF (Bad file descriptor) close(439) = -1 EBADF (Bad file descriptor) close(438) = -1 EBADF (Bad file descriptor) close(437) = -1 EBADF (Bad file descriptor) close(436) = -1 EBADF (Bad file descriptor) close(435) = -1 EBADF (Bad file descriptor) close(434) = -1 EBADF (Bad file descriptor) close(433) = -1 EBADF (Bad file descriptor) close(432) = -1 EBADF (Bad file descriptor) close(431) = -1 EBADF (Bad file descriptor) close(430) = -1 EBADF (Bad file descriptor) close(429) = -1 EBADF (Bad file descriptor) close(428) = -1 EBADF (Bad file descriptor) close(427) = -1 EBADF (Bad file descriptor) close(426) = -1 EBADF (Bad file descriptor) close(425) = -1 EBADF (Bad file descriptor) close(424) = -1 EBADF (Bad file descriptor) close(423) = -1 EBADF (Bad file descriptor) close(422) = -1 EBADF (Bad file descriptor) close(421) = -1 EBADF (Bad file descriptor) close(420) = -1 EBADF (Bad file descriptor) close(419) = -1 EBADF (Bad file descriptor) close(418) = -1 EBADF (Bad file descriptor) close(417) = -1 EBADF (Bad file descriptor) close(416) = -1 EBADF (Bad file descriptor) close(415) = -1 EBADF (Bad file descriptor) close(414) = -1 EBADF (Bad file descriptor) close(413) = -1 EBADF (Bad file descriptor) close(412) = -1 EBADF (Bad file descriptor) close(411) = -1 EBADF (Bad file descriptor) close(410) = -1 EBADF (Bad file descriptor) close(409) = -1 EBADF (Bad file descriptor) close(408) = -1 EBADF (Bad file descriptor) close(407) = -1 EBADF (Bad file descriptor) close(406) = -1 EBADF (Bad file descriptor) close(405) = -1 EBADF (Bad file descriptor) close(404) = -1 EBADF (Bad file descriptor) close(403) = -1 EBADF (Bad file descriptor) close(402) = -1 EBADF (Bad file descriptor) close(401) = -1 EBADF (Bad file descriptor) close(400) = -1 EBADF (Bad file descriptor) close(399) = -1 EBADF (Bad file descriptor) close(398) = -1 EBADF (Bad file descriptor) close(397) = -1 EBADF (Bad file descriptor) close(396) = -1 EBADF (Bad file descriptor) close(395) = -1 EBADF (Bad file descriptor) close(394) = -1 EBADF (Bad file descriptor) close(393) = -1 EBADF (Bad file descriptor) close(392) = -1 EBADF (Bad file descriptor) close(391) = -1 EBADF (Bad file descriptor) close(390) = -1 EBADF (Bad file descriptor) close(389) = -1 EBADF (Bad file descriptor) close(388) = -1 EBADF (Bad file descriptor) close(387) = -1 EBADF (Bad file descriptor) close(386) = -1 EBADF (Bad file descriptor) close(385) = -1 EBADF (Bad file descriptor) close(384) = -1 EBADF (Bad file descriptor) close(383) = -1 EBADF (Bad file descriptor) close(382) = -1 EBADF (Bad file descriptor) close(381) = -1 EBADF (Bad file descriptor) close(380) = -1 EBADF (Bad file descriptor) close(379) = -1 EBADF (Bad file descriptor) close(378) = -1 EBADF (Bad file descriptor) close(377) = -1 EBADF (Bad file descriptor) close(376) = -1 EBADF (Bad file descriptor) close(375) = -1 EBADF (Bad file descriptor) close(374) = -1 EBADF (Bad file descriptor) close(373) = -1 EBADF (Bad file descriptor) close(372) = -1 EBADF (Bad file descriptor) close(371) = -1 EBADF (Bad file descriptor) close(370) = -1 EBADF (Bad file descriptor) close(369) = -1 EBADF (Bad file descriptor) close(368) = -1 EBADF (Bad file descriptor) close(367) = -1 EBADF (Bad file descriptor) close(366) = -1 EBADF (Bad file descriptor) close(365) = -1 EBADF (Bad file descriptor) close(364) = -1 EBADF (Bad file descriptor) close(363) = -1 EBADF (Bad file descriptor) close(362) = -1 EBADF (Bad file descriptor) close(361) = -1 EBADF (Bad file descriptor) close(360) = -1 EBADF (Bad file descriptor) close(359) = -1 EBADF (Bad file descriptor) close(358) = -1 EBADF (Bad file descriptor) close(357) = -1 EBADF (Bad file descriptor) close(356) = -1 EBADF (Bad file descriptor) close(355) = -1 EBADF (Bad file descriptor) close(354) = -1 EBADF (Bad file descriptor) close(353) = -1 EBADF (Bad file descriptor) close(352) = -1 EBADF (Bad file descriptor) close(351) = -1 EBADF (Bad file descriptor) close(350) = -1 EBADF (Bad file descriptor) close(349) = -1 EBADF (Bad file descriptor) close(348) = -1 EBADF (Bad file descriptor) close(347) = -1 EBADF (Bad file descriptor) close(346) = -1 EBADF (Bad file descriptor) close(345) = -1 EBADF (Bad file descriptor) close(344) = -1 EBADF (Bad file descriptor) close(343) = -1 EBADF (Bad file descriptor) close(342) = -1 EBADF (Bad file descriptor) close(341) = -1 EBADF (Bad file descriptor) close(340) = -1 EBADF (Bad file descriptor) close(339) = -1 EBADF (Bad file descriptor) close(338) = -1 EBADF (Bad file descriptor) close(337) = -1 EBADF (Bad file descriptor) close(336) = -1 EBADF (Bad file descriptor) close(335) = -1 EBADF (Bad file descriptor) close(334) = -1 EBADF (Bad file descriptor) close(333) = -1 EBADF (Bad file descriptor) close(332) = -1 EBADF (Bad file descriptor) close(331) = -1 EBADF (Bad file descriptor) close(330) = -1 EBADF (Bad file descriptor) close(329) = -1 EBADF (Bad file descriptor) close(328) = -1 EBADF (Bad file descriptor) close(327) = -1 EBADF (Bad file descriptor) close(326) = -1 EBADF (Bad file descriptor) close(325) = -1 EBADF (Bad file descriptor) close(324) = -1 EBADF (Bad file descriptor) close(323) = -1 EBADF (Bad file descriptor) close(322) = -1 EBADF (Bad file descriptor) close(321) = -1 EBADF (Bad file descriptor) close(320) = -1 EBADF (Bad file descriptor) close(319) = -1 EBADF (Bad file descriptor) close(318) = -1 EBADF (Bad file descriptor) close(317) = -1 EBADF (Bad file descriptor) close(316) = -1 EBADF (Bad file descriptor) close(315) = -1 EBADF (Bad file descriptor) close(314) = -1 EBADF (Bad file descriptor) close(313) = -1 EBADF (Bad file descriptor) close(312) = -1 EBADF (Bad file descriptor) close(311) = -1 EBADF (Bad file descriptor) close(310) = -1 EBADF (Bad file descriptor) close(309) = -1 EBADF (Bad file descriptor) close(308) = -1 EBADF (Bad file descriptor) close(307) = -1 EBADF (Bad file descriptor) close(306) = -1 EBADF (Bad file descriptor) close(305) = -1 EBADF (Bad file descriptor) close(304) = -1 EBADF (Bad file descriptor) close(303) = -1 EBADF (Bad file descriptor) close(302) = -1 EBADF (Bad file descriptor) close(301) = -1 EBADF (Bad file descriptor) close(300) = -1 EBADF (Bad file descriptor) close(299) = -1 EBADF (Bad file descriptor) close(298) = -1 EBADF (Bad file descriptor) close(297) = -1 EBADF (Bad file descriptor) close(296) = -1 EBADF (Bad file descriptor) close(295) = -1 EBADF (Bad file descriptor) close(294) = -1 EBADF (Bad file descriptor) close(293) = -1 EBADF (Bad file descriptor) close(292) = -1 EBADF (Bad file descriptor) close(291) = -1 EBADF (Bad file descriptor) close(290) = -1 EBADF (Bad file descriptor) close(289) = -1 EBADF (Bad file descriptor) close(288) = -1 EBADF (Bad file descriptor) close(287) = -1 EBADF (Bad file descriptor) close(286) = -1 EBADF (Bad file descriptor) close(285) = -1 EBADF (Bad file descriptor) close(284) = -1 EBADF (Bad file descriptor) close(283) = -1 EBADF (Bad file descriptor) close(282) = -1 EBADF (Bad file descriptor) close(281) = -1 EBADF (Bad file descriptor) close(280) = -1 EBADF (Bad file descriptor) close(279) = -1 EBADF (Bad file descriptor) close(278) = -1 EBADF (Bad file descriptor) close(277) = -1 EBADF (Bad file descriptor) close(276) = -1 EBADF (Bad file descriptor) close(275) = -1 EBADF (Bad file descriptor) close(274) = -1 EBADF (Bad file descriptor) close(273) = -1 EBADF (Bad file descriptor) close(272) = -1 EBADF (Bad file descriptor) close(271) = -1 EBADF (Bad file descriptor) close(270) = -1 EBADF (Bad file descriptor) close(269) = -1 EBADF (Bad file descriptor) close(268) = -1 EBADF (Bad file descriptor) close(267) = -1 EBADF (Bad file descriptor) close(266) = -1 EBADF (Bad file descriptor) close(265) = -1 EBADF (Bad file descriptor) close(264) = -1 EBADF (Bad file descriptor) close(263) = -1 EBADF (Bad file descriptor) close(262) = -1 EBADF (Bad file descriptor) close(261) = -1 EBADF (Bad file descriptor) close(260) = -1 EBADF (Bad file descriptor) close(259) = -1 EBADF (Bad file descriptor) close(258) = -1 EBADF (Bad file descriptor) close(257) = -1 EBADF (Bad file descriptor) close(256) = -1 EBADF (Bad file descriptor) close(255) = -1 EBADF (Bad file descriptor) close(254) = -1 EBADF (Bad file descriptor) close(253) = -1 EBADF (Bad file descriptor) close(252) = -1 EBADF (Bad file descriptor) close(251) = -1 EBADF (Bad file descriptor) close(250) = -1 EBADF (Bad file descriptor) close(249) = -1 EBADF (Bad file descriptor) close(248) = -1 EBADF (Bad file descriptor) close(247) = -1 EBADF (Bad file descriptor) close(246) = -1 EBADF (Bad file descriptor) close(245) = -1 EBADF (Bad file descriptor) close(244) = -1 EBADF (Bad file descriptor) close(243) = -1 EBADF (Bad file descriptor) close(242) = -1 EBADF (Bad file descriptor) close(241) = -1 EBADF (Bad file descriptor) close(240) = -1 EBADF (Bad file descriptor) close(239) = -1 EBADF (Bad file descriptor) close(238) = -1 EBADF (Bad file descriptor) close(237) = -1 EBADF (Bad file descriptor) close(236) = -1 EBADF (Bad file descriptor) close(235) = -1 EBADF (Bad file descriptor) close(234) = -1 EBADF (Bad file descriptor) close(233) = -1 EBADF (Bad file descriptor) close(232) = -1 EBADF (Bad file descriptor) close(231) = -1 EBADF (Bad file descriptor) close(230) = -1 EBADF (Bad file descriptor) close(229) = -1 EBADF (Bad file descriptor) close(228) = -1 EBADF (Bad file descriptor) close(227) = -1 EBADF (Bad file descriptor) close(226) = -1 EBADF (Bad file descriptor) close(225) = -1 EBADF (Bad file descriptor) close(224) = -1 EBADF (Bad file descriptor) close(223) = -1 EBADF (Bad file descriptor) close(222) = -1 EBADF (Bad file descriptor) close(221) = -1 EBADF (Bad file descriptor) close(220) = -1 EBADF (Bad file descriptor) close(219) = -1 EBADF (Bad file descriptor) close(218) = -1 EBADF (Bad file descriptor) close(217) = -1 EBADF (Bad file descriptor) close(216) = -1 EBADF (Bad file descriptor) close(215) = -1 EBADF (Bad file descriptor) close(214) = -1 EBADF (Bad file descriptor) close(213) = -1 EBADF (Bad file descriptor) close(212) = -1 EBADF (Bad file descriptor) close(211) = -1 EBADF (Bad file descriptor) close(210) = -1 EBADF (Bad file descriptor) close(209) = -1 EBADF (Bad file descriptor) close(208) = -1 EBADF (Bad file descriptor) close(207) = -1 EBADF (Bad file descriptor) close(206) = -1 EBADF (Bad file descriptor) close(205) = -1 EBADF (Bad file descriptor) close(204) = -1 EBADF (Bad file descriptor) close(203) = -1 EBADF (Bad file descriptor) close(202) = -1 EBADF (Bad file descriptor) close(201) = -1 EBADF (Bad file descriptor) close(200) = -1 EBADF (Bad file descriptor) close(199) = -1 EBADF (Bad file descriptor) close(198) = -1 EBADF (Bad file descriptor) close(197) = -1 EBADF (Bad file descriptor) close(196) = -1 EBADF (Bad file descriptor) close(195) = -1 EBADF (Bad file descriptor) close(194) = -1 EBADF (Bad file descriptor) close(193) = -1 EBADF (Bad file descriptor) close(192) = -1 EBADF (Bad file descriptor) close(191) = -1 EBADF (Bad file descriptor) close(190) = -1 EBADF (Bad file descriptor) close(189) = -1 EBADF (Bad file descriptor) close(188) = -1 EBADF (Bad file descriptor) close(187) = -1 EBADF (Bad file descriptor) close(186) = -1 EBADF (Bad file descriptor) close(185) = -1 EBADF (Bad file descriptor) close(184) = -1 EBADF (Bad file descriptor) close(183) = -1 EBADF (Bad file descriptor) close(182) = -1 EBADF (Bad file descriptor) close(181) = -1 EBADF (Bad file descriptor) close(180) = -1 EBADF (Bad file descriptor) close(179) = -1 EBADF (Bad file descriptor) close(178) = -1 EBADF (Bad file descriptor) close(177) = -1 EBADF (Bad file descriptor) close(176) = -1 EBADF (Bad file descriptor) close(175) = -1 EBADF (Bad file descriptor) close(174) = -1 EBADF (Bad file descriptor) close(173) = -1 EBADF (Bad file descriptor) close(172) = -1 EBADF (Bad file descriptor) close(171) = -1 EBADF (Bad file descriptor) close(170) = -1 EBADF (Bad file descriptor) close(169) = -1 EBADF (Bad file descriptor) close(168) = -1 EBADF (Bad file descriptor) close(167) = -1 EBADF (Bad file descriptor) close(166) = -1 EBADF (Bad file descriptor) close(165) = -1 EBADF (Bad file descriptor) close(164) = -1 EBADF (Bad file descriptor) close(163) = -1 EBADF (Bad file descriptor) close(162) = -1 EBADF (Bad file descriptor) close(161) = -1 EBADF (Bad file descriptor) close(160) = -1 EBADF (Bad file descriptor) close(159) = -1 EBADF (Bad file descriptor) close(158) = -1 EBADF (Bad file descriptor) close(157) = -1 EBADF (Bad file descriptor) close(156) = -1 EBADF (Bad file descriptor) close(155) = -1 EBADF (Bad file descriptor) close(154) = -1 EBADF (Bad file descriptor) close(153) = -1 EBADF (Bad file descriptor) close(152) = -1 EBADF (Bad file descriptor) close(151) = -1 EBADF (Bad file descriptor) close(150) = -1 EBADF (Bad file descriptor) close(149) = -1 EBADF (Bad file descriptor) close(148) = -1 EBADF (Bad file descriptor) close(147) = -1 EBADF (Bad file descriptor) close(146) = -1 EBADF (Bad file descriptor) close(145) = -1 EBADF (Bad file descriptor) close(144) = -1 EBADF (Bad file descriptor) close(143) = -1 EBADF (Bad file descriptor) close(142) = -1 EBADF (Bad file descriptor) close(141) = -1 EBADF (Bad file descriptor) close(140) = -1 EBADF (Bad file descriptor) close(139) = -1 EBADF (Bad file descriptor) close(138) = -1 EBADF (Bad file descriptor) close(137) = -1 EBADF (Bad file descriptor) close(136) = -1 EBADF (Bad file descriptor) close(135) = -1 EBADF (Bad file descriptor) close(134) = -1 EBADF (Bad file descriptor) close(133) = -1 EBADF (Bad file descriptor) close(132) = -1 EBADF (Bad file descriptor) close(131) = -1 EBADF (Bad file descriptor) close(130) = -1 EBADF (Bad file descriptor) close(129) = -1 EBADF (Bad file descriptor) close(128) = -1 EBADF (Bad file descriptor) close(127) = -1 EBADF (Bad file descriptor) close(126) = -1 EBADF (Bad file descriptor) close(125) = -1 EBADF (Bad file descriptor) close(124) = -1 EBADF (Bad file descriptor) close(123) = -1 EBADF (Bad file descriptor) close(122) = -1 EBADF (Bad file descriptor) close(121) = -1 EBADF (Bad file descriptor) close(120) = -1 EBADF (Bad file descriptor) close(119) = -1 EBADF (Bad file descriptor) close(118) = -1 EBADF (Bad file descriptor) close(117) = -1 EBADF (Bad file descriptor) close(116) = -1 EBADF (Bad file descriptor) close(115) = -1 EBADF (Bad file descriptor) close(114) = -1 EBADF (Bad file descriptor) close(113) = -1 EBADF (Bad file descriptor) close(112) = -1 EBADF (Bad file descriptor) close(111) = -1 EBADF (Bad file descriptor) close(110) = -1 EBADF (Bad file descriptor) close(109) = -1 EBADF (Bad file descriptor) close(108) = -1 EBADF (Bad file descriptor) close(107) = -1 EBADF (Bad file descriptor) close(106) = -1 EBADF (Bad file descriptor) close(105) = -1 EBADF (Bad file descriptor) close(104) = -1 EBADF (Bad file descriptor) close(103) = -1 EBADF (Bad file descriptor) close(102) = -1 EBADF (Bad file descriptor) close(101) = -1 EBADF (Bad file descriptor) close(100) = -1 EBADF (Bad file descriptor) close(99) = -1 EBADF (Bad file descriptor) close(98) = -1 EBADF (Bad file descriptor) close(97) = -1 EBADF (Bad file descriptor) close(96) = -1 EBADF (Bad file descriptor) close(95) = -1 EBADF (Bad file descriptor) close(94) = -1 EBADF (Bad file descriptor) close(93) = -1 EBADF (Bad file descriptor) close(92) = -1 EBADF (Bad file descriptor) close(91) = -1 EBADF (Bad file descriptor) close(90) = -1 EBADF (Bad file descriptor) close(89) = -1 EBADF (Bad file descriptor) close(88) = -1 EBADF (Bad file descriptor) close(87) = -1 EBADF (Bad file descriptor) close(86) = -1 EBADF (Bad file descriptor) close(85) = -1 EBADF (Bad file descriptor) close(84) = -1 EBADF (Bad file descriptor) close(83) = -1 EBADF (Bad file descriptor) close(82) = -1 EBADF (Bad file descriptor) close(81) = -1 EBADF (Bad file descriptor) close(80) = -1 EBADF (Bad file descriptor) close(79) = -1 EBADF (Bad file descriptor) close(78) = -1 EBADF (Bad file descriptor) close(77) = -1 EBADF (Bad file descriptor) close(76) = -1 EBADF (Bad file descriptor) close(75) = -1 EBADF (Bad file descriptor) close(74) = -1 EBADF (Bad file descriptor) close(73) = -1 EBADF (Bad file descriptor) close(72) = -1 EBADF (Bad file descriptor) close(71) = -1 EBADF (Bad file descriptor) close(70) = -1 EBADF (Bad file descriptor) close(69) = -1 EBADF (Bad file descriptor) close(68) = -1 EBADF (Bad file descriptor) close(67) = -1 EBADF (Bad file descriptor) close(66) = -1 EBADF (Bad file descriptor) close(65) = -1 EBADF (Bad file descriptor) close(64) = -1 EBADF (Bad file descriptor) close(63) = -1 EBADF (Bad file descriptor) close(62) = -1 EBADF (Bad file descriptor) close(61) = -1 EBADF (Bad file descriptor) close(60) = -1 EBADF (Bad file descriptor) close(59) = -1 EBADF (Bad file descriptor) close(58) = -1 EBADF (Bad file descriptor) close(57) = -1 EBADF (Bad file descriptor) close(56) = -1 EBADF (Bad file descriptor) close(55) = -1 EBADF (Bad file descriptor) close(54) = -1 EBADF (Bad file descriptor) close(53) = -1 EBADF (Bad file descriptor) close(52) = -1 EBADF (Bad file descriptor) close(51) = -1 EBADF (Bad file descriptor) close(50) = -1 EBADF (Bad file descriptor) close(49) = -1 EBADF (Bad file descriptor) close(48) = -1 EBADF (Bad file descriptor) close(47) = -1 EBADF (Bad file descriptor) close(46) = -1 EBADF (Bad file descriptor) close(45) = -1 EBADF (Bad file descriptor) close(44) = -1 EBADF (Bad file descriptor) close(43) = -1 EBADF (Bad file descriptor) close(42) = -1 EBADF (Bad file descriptor) close(41) = -1 EBADF (Bad file descriptor) close(40) = -1 EBADF (Bad file descriptor) close(39) = -1 EBADF (Bad file descriptor) close(38) = -1 EBADF (Bad file descriptor) close(37) = -1 EBADF (Bad file descriptor) close(36) = -1 EBADF (Bad file descriptor) close(35) = -1 EBADF (Bad file descriptor) close(34) = -1 EBADF (Bad file descriptor) close(33) = -1 EBADF (Bad file descriptor) close(32) = -1 EBADF (Bad file descriptor) close(31) = -1 EBADF (Bad file descriptor) close(30) = -1 EBADF (Bad file descriptor) close(29) = -1 EBADF (Bad file descriptor) close(28) = -1 EBADF (Bad file descriptor) close(27) = -1 EBADF (Bad file descriptor) close(26) = -1 EBADF (Bad file descriptor) close(25) = -1 EBADF (Bad file descriptor) close(24) = -1 EBADF (Bad file descriptor) close(23) = -1 EBADF (Bad file descriptor) close(22) = -1 EBADF (Bad file descriptor) close(21) = -1 EBADF (Bad file descriptor) close(20) = -1 EBADF (Bad file descriptor) close(19) = -1 EBADF (Bad file descriptor) close(18) = -1 EBADF (Bad file descriptor) close(17) = -1 EBADF (Bad file descriptor) close(16) = -1 EBADF (Bad file descriptor) close(15) = -1 EBADF (Bad file descriptor) close(14) = -1 EBADF (Bad file descriptor) close(13) = -1 EBADF (Bad file descriptor) close(12) = -1 EBADF (Bad file descriptor) close(11) = -1 EBADF (Bad file descriptor) close(10) = -1 EBADF (Bad file descriptor) close(9) = -1 EBADF (Bad file descriptor) close(8) = -1 EBADF (Bad file descriptor) close(7) = -1 EBADF (Bad file descriptor) close(6) = -1 EBADF (Bad file descriptor) close(5) = -1 EBADF (Bad file descriptor) close(4) = -1 EBADF (Bad file descriptor) close(3) = -1 EBADF (Bad file descriptor) open("/proc/cpuinfo", O_RDONLY) = 3 read(3, "p", 1) = 1 read(3, "r", 1) = 1 read(3, "o", 1) = 1 read(3, "c", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, "s", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "v", 1) = 1 read(3, "e", 1) = 1 read(3, "n", 1) = 1 read(3, "d", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "G", 1) = 1 read(3, "e", 1) = 1 read(3, "n", 1) = 1 read(3, "u", 1) = 1 read(3, "i", 1) = 1 read(3, "n", 1) = 1 read(3, "e", 1) = 1 read(3, "I", 1) = 1 read(3, "n", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, "\n", 1) = 1 read(3, "a", 1) = 1 read(3, "r", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "A", 1) = 1 read(3, "-", 1) = 1 read(3, "6", 1) = 1 read(3, "4", 1) = 1 read(3, "\n", 1) = 1 read(3, "f", 1) = 1 read(3, "a", 1) = 1 read(3, "m", 1) = 1 read(3, "i", 1) = 1 read(3, "l", 1) = 1 read(3, "y", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "2", 1) = 1 read(3, "\n", 1) = 1 read(3, "m", 1) = 1 read(3, "o", 1) = 1 read(3, "d", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "m", 1) = 1 read(3, "o", 1) = 1 read(3, "d", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, "n", 1) = 1 read(3, "a", 1) = 1 read(3, "m", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "D", 1) = 1 read(3, "u", 1) = 1 read(3, "a", 1) = 1 read(3, "l", 1) = 1 read(3, "-", 1) = 1 read(3, "C", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "n", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, "(", 1) = 1 read(3, "R", 1) = 1 read(3, ")", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "t", 1) = 1 read(3, "a", 1) = 1 read(3, "n", 1) = 1 read(3, "i", 1) = 1 read(3, "u", 1) = 1 read(3, "m", 1) = 1 read(3, "(", 1) = 1 read(3, "R", 1) = 1 read(3, ")", 1) = 1 read(3, " ", 1) = 1 read(3, "2", 1) = 1 read(3, " ", 1) = 1 read(3, "P", 1) = 1 read(3, "r", 1) = 1 read(3, "o", 1) = 1 read(3, "c", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, "s", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, "9", 1) = 1 read(3, "1", 1) = 1 read(3, "4", 1) = 1 read(3, "0", 1) = 1 read(3, "M", 1) = 1 read(3, "\n", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "v", 1) = 1 read(3, "i", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "o", 1) = 1 read(3, "n", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "a", 1) = 1 read(3, "r", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "v", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "f", 1) = 1 read(3, "e", 1) = 1 read(3, "a", 1) = 1 read(3, "t", 1) = 1 read(3, "u", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "b", 1) = 1 read(3, "r", 1) = 1 read(3, "a", 1) = 1 read(3, "n", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, "l", 1) = 1 read(3, "o", 1) = 1 read(3, "n", 1) = 1 read(3, "g", 1) = 1 read(3, ",", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, "-", 1) = 1 read(3, "b", 1) = 1 read(3, "y", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "a", 1) = 1 read(3, "t", 1) = 1 read(3, "o", 1) = 1 read(3, "m", 1) = 1 read(3, "i", 1) = 1 read(3, "c", 1) = 1 read(3, " ", 1) = 1 read(3, "o", 1) = 1 read(3, "p", 1) = 1 read(3, "s", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "n", 1) = 1 read(3, "u", 1) = 1 read(3, "m", 1) = 1 read(3, "b", 1) = 1 read(3, "e", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "g", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "4", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "M", 1) = 1 read(3, "H", 1) = 1 read(3, "z", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, "6", 1) = 1 read(3, "9", 1) = 1 read(3, ".", 1) = 1 read(3, "5", 1) = 1 read(3, "0", 1) = 1 read(3, "3", 1) = 1 read(3, "\n", 1) = 1 read(3, "i", 1) = 1 read(3, "t", 1) = 1 read(3, "c", 1) = 1 read(3, " ", 1) = 1 read(3, "M", 1) = 1 read(3, "H", 1) = 1 read(3, "z", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "4", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, ".", 1) = 1 read(3, "8", 1) = 1 read(3, "7", 1) = 1 read(3, "5", 1) = 1 read(3, "0", 1) = 1 read(3, "0", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "B", 1) = 1 read(3, "o", 1) = 1 read(3, "g", 1) = 1 read(3, "o", 1) = 1 read(3, "M", 1) = 1 read(3, "I", 1) = 1 read(3, "P", 1) = 1 read(3, "S", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "3", 1) = 1 read(3, "2", 1) = 1 read(3, "5", 1) = 1 read(3, ".", 1) = 1 read(3, "9", 1) = 1 read(3, "5", 1) = 1 read(3, "\n", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "b", 1) = 1 read(3, "l", 1) = 1 read(3, "i", 1) = 1 read(3, "n", 1) = 1 read(3, "g", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "2", 1) = 1 read(3, "\n", 1) = 1 read(3, "p", 1) = 1 read(3, "h", 1) = 1 read(3, "y", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "c", 1) = 1 read(3, "a", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "t", 1) = 1 read(3, "h", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "a", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "\n", 1) = 1 read(3, "p", 1) = 1 read(3, "r", 1) = 1 read(3, "o", 1) = 1 read(3, "c", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, "s", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "v", 1) = 1 read(3, "e", 1) = 1 read(3, "n", 1) = 1 read(3, "d", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "G", 1) = 1 read(3, "e", 1) = 1 read(3, "n", 1) = 1 read(3, "u", 1) = 1 read(3, "i", 1) = 1 read(3, "n", 1) = 1 read(3, "e", 1) = 1 read(3, "I", 1) = 1 read(3, "n", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, "\n", 1) = 1 read(3, "a", 1) = 1 read(3, "r", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "A", 1) = 1 read(3, "-", 1) = 1 read(3, "6", 1) = 1 read(3, "4", 1) = 1 read(3, "\n", 1) = 1 read(3, "f", 1) = 1 read(3, "a", 1) = 1 read(3, "m", 1) = 1 read(3, "i", 1) = 1 read(3, "l", 1) = 1 read(3, "y", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "2", 1) = 1 read(3, "\n", 1) = 1 read(3, "m", 1) = 1 read(3, "o", 1) = 1 read(3, "d", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "m", 1) = 1 read(3, "o", 1) = 1 read(3, "d", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, "n", 1) = 1 read(3, "a", 1) = 1 read(3, "m", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "D", 1) = 1 read(3, "u", 1) = 1 read(3, "a", 1) = 1 read(3, "l", 1) = 1 read(3, "-", 1) = 1 read(3, "C", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "n", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, "(", 1) = 1 read(3, "R", 1) = 1 read(3, ")", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "t", 1) = 1 read(3, "a", 1) = 1 read(3, "n", 1) = 1 read(3, "i", 1) = 1 read(3, "u", 1) = 1 read(3, "m", 1) = 1 read(3, "(", 1) = 1 read(3, "R", 1) = 1 read(3, ")", 1) = 1 read(3, " ", 1) = 1 read(3, "2", 1) = 1 read(3, " ", 1) = 1 read(3, "P", 1) = 1 read(3, "r", 1) = 1 read(3, "o", 1) = 1 read(3, "c", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, "s", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, "9", 1) = 1 read(3, "1", 1) = 1 read(3, "4", 1) = 1 read(3, "0", 1) = 1 read(3, "M", 1) = 1 read(3, "\n", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "v", 1) = 1 read(3, "i", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "o", 1) = 1 read(3, "n", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "a", 1) = 1 read(3, "r", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "v", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "f", 1) = 1 read(3, "e", 1) = 1 read(3, "a", 1) = 1 read(3, "t", 1) = 1 read(3, "u", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "b", 1) = 1 read(3, "r", 1) = 1 read(3, "a", 1) = 1 read(3, "n", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, "l", 1) = 1 read(3, "o", 1) = 1 read(3, "n", 1) = 1 read(3, "g", 1) = 1 read(3, ",", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, "-", 1) = 1 read(3, "b", 1) = 1 read(3, "y", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "a", 1) = 1 read(3, "t", 1) = 1 read(3, "o", 1) = 1 read(3, "m", 1) = 1 read(3, "i", 1) = 1 read(3, "c", 1) = 1 read(3, " ", 1) = 1 read(3, "o", 1) = 1 read(3, "p", 1) = 1 read(3, "s", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "n", 1) = 1 read(3, "u", 1) = 1 read(3, "m", 1) = 1 read(3, "b", 1) = 1 read(3, "e", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "g", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "4", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "M", 1) = 1 read(3, "H", 1) = 1 read(3, "z", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, "6", 1) = 1 read(3, "9", 1) = 1 read(3, ".", 1) = 1 read(3, "5", 1) = 1 read(3, "0", 1) = 1 read(3, "3", 1) = 1 read(3, "\n", 1) = 1 read(3, "i", 1) = 1 read(3, "t", 1) = 1 read(3, "c", 1) = 1 read(3, " ", 1) = 1 read(3, "M", 1) = 1 read(3, "H", 1) = 1 read(3, "z", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "4", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, ".", 1) = 1 read(3, "8", 1) = 1 read(3, "7", 1) = 1 read(3, "5", 1) = 1 read(3, "0", 1) = 1 read(3, "0", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "B", 1) = 1 read(3, "o", 1) = 1 read(3, "g", 1) = 1 read(3, "o", 1) = 1 read(3, "M", 1) = 1 read(3, "I", 1) = 1 read(3, "P", 1) = 1 read(3, "S", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "3", 1) = 1 read(3, "2", 1) = 1 read(3, "5", 1) = 1 read(3, ".", 1) = 1 read(3, "9", 1) = 1 read(3, "5", 1) = 1 read(3, "\n", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "b", 1) = 1 read(3, "l", 1) = 1 read(3, "i", 1) = 1 read(3, "n", 1) = 1 read(3, "g", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "2", 1) = 1 read(3, "\n", 1) = 1 read(3, "p", 1) = 1 read(3, "h", 1) = 1 read(3, "y", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "c", 1) = 1 read(3, "a", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "t", 1) = 1 read(3, "h", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "a", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "\n", 1) = 1 read(3, "p", 1) = 1 read(3, "r", 1) = 1 read(3, "o", 1) = 1 read(3, "c", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, "s", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "2", 1) = 1 read(3, "\n", 1) = 1 read(3, "v", 1) = 1 read(3, "e", 1) = 1 read(3, "n", 1) = 1 read(3, "d", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "G", 1) = 1 read(3, "e", 1) = 1 read(3, "n", 1) = 1 read(3, "u", 1) = 1 read(3, "i", 1) = 1 read(3, "n", 1) = 1 read(3, "e", 1) = 1 read(3, "I", 1) = 1 read(3, "n", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, "\n", 1) = 1 read(3, "a", 1) = 1 read(3, "r", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "A", 1) = 1 read(3, "-", 1) = 1 read(3, "6", 1) = 1 read(3, "4", 1) = 1 read(3, "\n", 1) = 1 read(3, "f", 1) = 1 read(3, "a", 1) = 1 read(3, "m", 1) = 1 read(3, "i", 1) = 1 read(3, "l", 1) = 1 read(3, "y", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "2", 1) = 1 read(3, "\n", 1) = 1 read(3, "m", 1) = 1 read(3, "o", 1) = 1 read(3, "d", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "m", 1) = 1 read(3, "o", 1) = 1 read(3, "d", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, "n", 1) = 1 read(3, "a", 1) = 1 read(3, "m", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "D", 1) = 1 read(3, "u", 1) = 1 read(3, "a", 1) = 1 read(3, "l", 1) = 1 read(3, "-", 1) = 1 read(3, "C", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "n", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, "(", 1) = 1 read(3, "R", 1) = 1 read(3, ")", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "t", 1) = 1 read(3, "a", 1) = 1 read(3, "n", 1) = 1 read(3, "i", 1) = 1 read(3, "u", 1) = 1 read(3, "m", 1) = 1 read(3, "(", 1) = 1 read(3, "R", 1) = 1 read(3, ")", 1) = 1 read(3, " ", 1) = 1 read(3, "2", 1) = 1 read(3, " ", 1) = 1 read(3, "P", 1) = 1 read(3, "r", 1) = 1 read(3, "o", 1) = 1 read(3, "c", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, "s", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, "9", 1) = 1 read(3, "1", 1) = 1 read(3, "4", 1) = 1 read(3, "0", 1) = 1 read(3, "M", 1) = 1 read(3, "\n", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "v", 1) = 1 read(3, "i", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "o", 1) = 1 read(3, "n", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "a", 1) = 1 read(3, "r", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "v", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "f", 1) = 1 read(3, "e", 1) = 1 read(3, "a", 1) = 1 read(3, "t", 1) = 1 read(3, "u", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "b", 1) = 1 read(3, "r", 1) = 1 read(3, "a", 1) = 1 read(3, "n", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, "l", 1) = 1 read(3, "o", 1) = 1 read(3, "n", 1) = 1 read(3, "g", 1) = 1 read(3, ",", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, "-", 1) = 1 read(3, "b", 1) = 1 read(3, "y", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "a", 1) = 1 read(3, "t", 1) = 1 read(3, "o", 1) = 1 read(3, "m", 1) = 1 read(3, "i", 1) = 1 read(3, "c", 1) = 1 read(3, " ", 1) = 1 read(3, "o", 1) = 1 read(3, "p", 1) = 1 read(3, "s", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "n", 1) = 1 read(3, "u", 1) = 1 read(3, "m", 1) = 1 read(3, "b", 1) = 1 read(3, "e", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "g", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "4", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "M", 1) = 1 read(3, "H", 1) = 1 read(3, "z", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, "6", 1) = 1 read(3, "9", 1) = 1 read(3, ".", 1) = 1 read(3, "5", 1) = 1 read(3, "0", 1) = 1 read(3, "3", 1) = 1 read(3, "\n", 1) = 1 read(3, "i", 1) = 1 read(3, "t", 1) = 1 read(3, "c", 1) = 1 read(3, " ", 1) = 1 read(3, "M", 1) = 1 read(3, "H", 1) = 1 read(3, "z", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "4", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, ".", 1) = 1 read(3, "8", 1) = 1 read(3, "7", 1) = 1 read(3, "5", 1) = 1 read(3, "0", 1) = 1 read(3, "0", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "B", 1) = 1 read(3, "o", 1) = 1 read(3, "g", 1) = 1 read(3, "o", 1) = 1 read(3, "M", 1) = 1 read(3, "I", 1) = 1 read(3, "P", 1) = 1 read(3, "S", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "3", 1) = 1 read(3, "2", 1) = 1 read(3, "5", 1) = 1 read(3, ".", 1) = 1 read(3, "9", 1) = 1 read(3, "5", 1) = 1 read(3, "\n", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "b", 1) = 1 read(3, "l", 1) = 1 read(3, "i", 1) = 1 read(3, "n", 1) = 1 read(3, "g", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "2", 1) = 1 read(3, "\n", 1) = 1 read(3, "p", 1) = 1 read(3, "h", 1) = 1 read(3, "y", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "c", 1) = 1 read(3, "a", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "t", 1) = 1 read(3, "h", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "a", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "\n", 1) = 1 read(3, "p", 1) = 1 read(3, "r", 1) = 1 read(3, "o", 1) = 1 read(3, "c", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, "s", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "\n", 1) = 1 read(3, "v", 1) = 1 read(3, "e", 1) = 1 read(3, "n", 1) = 1 read(3, "d", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "G", 1) = 1 read(3, "e", 1) = 1 read(3, "n", 1) = 1 read(3, "u", 1) = 1 read(3, "i", 1) = 1 read(3, "n", 1) = 1 read(3, "e", 1) = 1 read(3, "I", 1) = 1 read(3, "n", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, "\n", 1) = 1 read(3, "a", 1) = 1 read(3, "r", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "A", 1) = 1 read(3, "-", 1) = 1 read(3, "6", 1) = 1 read(3, "4", 1) = 1 read(3, "\n", 1) = 1 read(3, "f", 1) = 1 read(3, "a", 1) = 1 read(3, "m", 1) = 1 read(3, "i", 1) = 1 read(3, "l", 1) = 1 read(3, "y", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "2", 1) = 1 read(3, "\n", 1) = 1 read(3, "m", 1) = 1 read(3, "o", 1) = 1 read(3, "d", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "m", 1) = 1 read(3, "o", 1) = 1 read(3, "d", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, "n", 1) = 1 read(3, "a", 1) = 1 read(3, "m", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "D", 1) = 1 read(3, "u", 1) = 1 read(3, "a", 1) = 1 read(3, "l", 1) = 1 read(3, "-", 1) = 1 read(3, "C", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "n", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, "l", 1) = 1 read(3, "(", 1) = 1 read(3, "R", 1) = 1 read(3, ")", 1) = 1 read(3, " ", 1) = 1 read(3, "I", 1) = 1 read(3, "t", 1) = 1 read(3, "a", 1) = 1 read(3, "n", 1) = 1 read(3, "i", 1) = 1 read(3, "u", 1) = 1 read(3, "m", 1) = 1 read(3, "(", 1) = 1 read(3, "R", 1) = 1 read(3, ")", 1) = 1 read(3, " ", 1) = 1 read(3, "2", 1) = 1 read(3, " ", 1) = 1 read(3, "P", 1) = 1 read(3, "r", 1) = 1 read(3, "o", 1) = 1 read(3, "c", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, "s", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, "9", 1) = 1 read(3, "1", 1) = 1 read(3, "4", 1) = 1 read(3, "0", 1) = 1 read(3, "M", 1) = 1 read(3, "\n", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "v", 1) = 1 read(3, "i", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "o", 1) = 1 read(3, "n", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "a", 1) = 1 read(3, "r", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "v", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "f", 1) = 1 read(3, "e", 1) = 1 read(3, "a", 1) = 1 read(3, "t", 1) = 1 read(3, "u", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "b", 1) = 1 read(3, "r", 1) = 1 read(3, "a", 1) = 1 read(3, "n", 1) = 1 read(3, "c", 1) = 1 read(3, "h", 1) = 1 read(3, "l", 1) = 1 read(3, "o", 1) = 1 read(3, "n", 1) = 1 read(3, "g", 1) = 1 read(3, ",", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, "-", 1) = 1 read(3, "b", 1) = 1 read(3, "y", 1) = 1 read(3, "t", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "a", 1) = 1 read(3, "t", 1) = 1 read(3, "o", 1) = 1 read(3, "m", 1) = 1 read(3, "i", 1) = 1 read(3, "c", 1) = 1 read(3, " ", 1) = 1 read(3, "o", 1) = 1 read(3, "p", 1) = 1 read(3, "s", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "n", 1) = 1 read(3, "u", 1) = 1 read(3, "m", 1) = 1 read(3, "b", 1) = 1 read(3, "e", 1) = 1 read(3, "r", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "g", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "4", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "p", 1) = 1 read(3, "u", 1) = 1 read(3, " ", 1) = 1 read(3, "M", 1) = 1 read(3, "H", 1) = 1 read(3, "z", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, "6", 1) = 1 read(3, "9", 1) = 1 read(3, ".", 1) = 1 read(3, "5", 1) = 1 read(3, "0", 1) = 1 read(3, "3", 1) = 1 read(3, "\n", 1) = 1 read(3, "i", 1) = 1 read(3, "t", 1) = 1 read(3, "c", 1) = 1 read(3, " ", 1) = 1 read(3, "M", 1) = 1 read(3, "H", 1) = 1 read(3, "z", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "4", 1) = 1 read(3, "1", 1) = 1 read(3, "6", 1) = 1 read(3, ".", 1) = 1 read(3, "8", 1) = 1 read(3, "7", 1) = 1 read(3, "5", 1) = 1 read(3, "0", 1) = 1 read(3, "0", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "B", 1) = 1 read(3, "o", 1) = 1 read(3, "g", 1) = 1 read(3, "o", 1) = 1 read(3, "M", 1) = 1 read(3, "I", 1) = 1 read(3, "P", 1) = 1 read(3, "S", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "3", 1) = 1 read(3, "2", 1) = 1 read(3, "5", 1) = 1 read(3, ".", 1) = 1 read(3, "9", 1) = 1 read(3, "5", 1) = 1 read(3, "\n", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "b", 1) = 1 read(3, "l", 1) = 1 read(3, "i", 1) = 1 read(3, "n", 1) = 1 read(3, "g", 1) = 1 read(3, "s", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "2", 1) = 1 read(3, "\n", 1) = 1 read(3, "p", 1) = 1 read(3, "h", 1) = 1 read(3, "y", 1) = 1 read(3, "s", 1) = 1 read(3, "i", 1) = 1 read(3, "c", 1) = 1 read(3, "a", 1) = 1 read(3, "l", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "3", 1) = 1 read(3, "\n", 1) = 1 read(3, "c", 1) = 1 read(3, "o", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "1", 1) = 1 read(3, "\n", 1) = 1 read(3, "t", 1) = 1 read(3, "h", 1) = 1 read(3, "r", 1) = 1 read(3, "e", 1) = 1 read(3, "a", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, "i", 1) = 1 read(3, "d", 1) = 1 read(3, " ", 1) = 1 read(3, " ", 1) = 1 read(3, ":", 1) = 1 read(3, " ", 1) = 1 read(3, "0", 1) = 1 read(3, "\n", 1) = 1 read(3, "\n", 1) = 1 read(3, "", 1) = 0 close(3) = 0 readlink("/etc/malloc.conf", 0x60000fffffc9c532, 4096) = -1 ENOENT (No such file or directory) mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x200000000003c000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000608000 mmap(0x2000000000708000, 1015808, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000708000 munmap(0x2000000000608000, 1015808) = 0 uname({sys="Linux", node="mansotarro1", ...}) = 0 syscall_1317(0x60000fffffc9d520, 0x80000, 0xc000000000000491, 0x200000000012af20, 0, 0, 0xc000000000000710, 0x2000000000028bd4, 0x10, 0x200000000006d510, 0x200000000041cd5a, 0x60000fffffc9d3f0, 0x40000000000db110, 0x60000fffffc9d520, 0x20, 0x2000000000354900, 0x288, 0x40000000000db113, 0, 0xfffffffffffffffb, 0, 0, 0, 0, 0x60000fffffc9d9c0, 0, 0, 0, 0, 0, 0x218, 0x60000fffffc9d528) = 0 clone2(child_stack=0, stack_size=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x200000000013b0a0) = 5980 close(4) = 0 fcntl(3, F_SETFD, 0) = 0 fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000608000 read(3, "", 16384) = 0 --- SIGCHLD (Child exited) @ a000000000010721 (175c) --- close(3) = 0 wait4(5980, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 5980 munmap(0x2000000000608000, 65536) = 0 open("/usr/share/zoneinfo/UTC", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=118, ...}) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=118, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000608000 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0"..., 4096) = 118 lseek(3, -62, SEEK_CUR) = 56 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0"..., 4096) = 62 close(3) = 0 munmap(0x2000000000608000, 65536) = 0 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) close(3) = 0 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) close(3) = 0 open("/etc/nsswitch.conf", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=475, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000608000 read(3, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 475 read(3, "", 4096) = 0 close(3) = 0 munmap(0x2000000000608000, 65536) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=15068, ...}) = 0 mmap(NULL, 15068, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2000000000608000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/libnss_compat.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\300\30\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=58608, ...}) = 0 mmap(NULL, 121976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x200000000060c000 mprotect(0x200000000061c000, 49152, PROT_NONE) = 0 mmap(0x2000000000628000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x2000000000628000 close(3) = 0 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x200000000062c000 munmap(0x2000000000608000, 15068) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=15068, ...}) = 0 mmap(NULL, 15068, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2000000000608000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/libnss_nis.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0@(\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=81904, ...}) = 0 mmap(NULL, 145560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2000000000630000 mprotect(0x2000000000644000, 49152, PROT_NONE) = 0 mmap(0x2000000000650000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x2000000000650000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/ia64-linux-gnu/libnss_files.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\200(\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=86896, ...}) = 0 mmap(NULL, 150704, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2000000000654000 mprotect(0x200000000066c000, 49152, PROT_NONE) = 0 mmap(0x2000000000678000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x2000000000678000 close(3) = 0 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x200000000067c000 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000680000 munmap(0x2000000000608000, 15068) = 0 open("/etc/group", O_RDONLY|O_CLOEXEC) = 3 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=861, ...}) = 0 mmap(NULL, 861, PROT_READ, MAP_SHARED, 3, 0) = 0x2000000000800000 lseek(3, 861, SEEK_SET) = 861 munmap(0x2000000000800000, 861) = 0 close(3) = 0 socket(PF_NETLINK, SOCK_RAW, 0) = 3 bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0 getsockname(3, {sa_family=AF_NETLINK, pid=5979, groups=00000000}, [12]) = 0 gettimeofday({1352116726, 893482}, NULL) = 0 sendto(3, "\24\0\0\0\26\0\1\3\366\251\227P\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0\366\251\227P[\27\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 108 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"@\0\0\0\24\0\2\0\366\251\227P[\27\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 128 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\366\251\227P[\27\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 20 close(3) = 0 open("/etc/gai.conf", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=2940, ...}) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=2940, ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000800000 read(3, "# Configuration for getaddrinfo("..., 4096) = 2940 read(3, "", 4096) = 0 close(3) = 0 munmap(0x2000000000800000, 65536) = 0 futex(0x200000000051f77c, FUTEX_WAKE_PRIVATE, 2147483647) = 0 socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3 connect(3, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::b85a:500:0:20", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=337680}, 28) = -1 ENETUNREACH (Network is unreachable) connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0 connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("0.0.0.0")}, 16) = 0 getsockname(3, {sa_family=AF_INET6, sin6_port=htons(53974), inet_pton(AF_INET6, "::ffff:127.0.0.1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0 close(3) = 0 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) close(3) = 0 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) close(3) = 0 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=1468, ...}) = 0 mmap(NULL, 1468, PROT_READ, MAP_SHARED, 3, 0) = 0x2000000000800000 lseek(3, 1468, SEEK_SET) = 1468 munmap(0x2000000000800000, 1468) = 0 close(3) = 0 open("/etc/group", O_RDONLY|O_CLOEXEC) = 3 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=861, ...}) = 0 mmap(NULL, 861, PROT_READ, MAP_SHARED, 3, 0) = 0x2000000000800000 lseek(3, 861, SEEK_SET) = 861 munmap(0x2000000000800000, 861) = 0 close(3) = 0 open("/etc/group", O_RDONLY|O_CLOEXEC) = 3 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=861, ...}) = 0 mmap(NULL, 861, PROT_READ, MAP_SHARED, 3, 0) = 0x2000000000800000 lseek(3, 861, SEEK_SET) = 861 munmap(0x2000000000800000, 861) = 0 close(3) = 0 open("/etc/group", O_RDONLY|O_CLOEXEC) = 3 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=861, ...}) = 0 mmap(NULL, 861, PROT_READ, MAP_SHARED, 3, 0) = 0x2000000000800000 lseek(3, 861, SEEK_SET) = 861 munmap(0x2000000000800000, 861) = 0 close(3) = 0 socket(PF_NETLINK, SOCK_RAW, 0) = 3 bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0 getsockname(3, {sa_family=AF_NETLINK, pid=5979, groups=00000000}, [12]) = 0 gettimeofday({1352116726, 905140}, NULL) = 0 sendto(3, "\24\0\0\0\26\0\1\3\366\251\227P\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0\366\251\227P[\27\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 108 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"@\0\0\0\24\0\2\0\366\251\227P[\27\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 128 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\366\251\227P[\27\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 20 close(3) = 0 socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3 connect(3, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::180:adfb:0:0", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=7508870}, 28) = -1 ENETUNREACH (Network is unreachable) connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0 connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("0.0.0.0")}, 16) = 0 getsockname(3, {sa_family=AF_INET6, sin6_port=htons(36812), inet_pton(AF_INET6, "::ffff:127.0.0.1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0 close(3) = 0 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=1468, ...}) = 0 mmap(NULL, 1468, PROT_READ, MAP_SHARED, 3, 0) = 0x2000000000800000 lseek(3, 1468, SEEK_SET) = 1468 munmap(0x2000000000800000, 1468) = 0 close(3) = 0 open("/etc/group", O_RDONLY|O_CLOEXEC) = 3 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=861, ...}) = 0 mmap(NULL, 861, PROT_READ, MAP_SHARED, 3, 0) = 0x2000000000800000 lseek(3, 861, SEEK_SET) = 861 munmap(0x2000000000800000, 861) = 0 close(3) = 0 open("/etc/group", O_RDONLY|O_CLOEXEC) = 3 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=861, ...}) = 0 mmap(NULL, 861, PROT_READ, MAP_SHARED, 3, 0) = 0x2000000000800000 lseek(3, 861, SEEK_SET) = 861 munmap(0x2000000000800000, 861) = 0 close(3) = 0 open("/usr/etc/varnish/default.vcl", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=2965, ...}) = 0 read(3, "# This is a basic VCL configurat"..., 2965) = 2965 close(3) = 0 uname({sys="Linux", node="mansotarro1", ...}) = 0 mkdir("/usr/local/var/varnish/mansotarro1", 0755) = -1 EEXIST (File exists) chdir("/usr/local/var/varnish/mansotarro1") = 0 open("./vcl.1P9zoqAU.c", O_RDWR|O_CREAT|O_EXCL, 0600) = 3 close(3) = 0 pipe([3, 4]) = 3 clone2(child_stack=0, stack_size=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x200000000013b0a0) = 5982 close(4) = 0 read(3, "", 8191) = 0 --- SIGCHLD (Child exited) @ a000000000010721 (175e) --- close(3) = 0 wait4(5982, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV}], 0, NULL) = 5982 unlink("./vcl.1P9zoqAU.c") = 0 write(2, "Running VCC-compiler failed, sig"..., 38) = 38 write(2, "\nVCL compilation failed\n", 24) = 24 exit_group(2) = ? From soumendu_bhattacharya at non.agilent.com Tue Nov 6 11:27:13 2012 From: soumendu_bhattacharya at non.agilent.com (Soumendu Bhattacharya) Date: Tue, 6 Nov 2012 16:57:13 +0530 Subject: Clustering of Varnish Cache Message-ID: <003a01cdbc11$acbdacb0$06390610$@non.agilent.com> Hi , I am new to Varnish and we are in the process of trying out Varnish for our website. So far is has been a very good experience (this is not yet in Production) keeping in mind the business logic built into this site. I tried searching for documentations or archives in this mailing list - but so far haven't found anything conclusive. Can someone please highlight if Varnish can do the following : 1. Varnish Cache clustering (ie different physical servers hosting Varnish will share the same cache among them ). If this is doable , can someone give a brief of how they have implemented this. Currently we have only tested Varnish with cache as malloc or file . 2. Can the above be done if Persistent Store is used (i.e cache clustering using Persistent Store). ? if yes, would be really obliged if someone can provide some pointers as to how to set this up. 3. Is Persistent store an option for a Production environment ? ( read somewhere that its experimental). Regards Soumendu -------------- next part -------------- An HTML attachment was scrubbed... URL: From perbu at varnish-software.com Tue Nov 6 11:44:01 2012 From: perbu at varnish-software.com (Per Buer) Date: Tue, 6 Nov 2012 12:44:01 +0100 Subject: Clustering of Varnish Cache In-Reply-To: <003a01cdbc11$acbdacb0$06390610$@non.agilent.com> References: <003a01cdbc11$acbdacb0$06390610$@non.agilent.com> Message-ID: Hi, On Tue, Nov 6, 2012 at 12:27 PM, Soumendu Bhattacharya < soumendu_bhattacharya at non.agilent.com> wrote: > > > ** > > Can someone please highlight if Varnish can do the following :**** > > ** ** > > **1. **Varnish Cache clustering (ie different physical servers > hosting Varnish will share the same cache among them ). If this is doable , > can someone give a brief of how they have implemented this. Currently we > have only tested Varnish with cache as malloc or file . > No. Varnish servers can't share cache. You probably don't need this if you set up stuff right. You might want to hash incoming requests on the URL so you don't get any cache duplication. If you are worried about sudden drops in hit rate if a server should fail you might want to look into a setup with some depth (ie two layers of cache). However, my recommendation is to keep things simple. Varnish is fairly robust and once it is up and running it tends to stay that way. **** > > **2. **Can the above be done if Persistent Store is used (i.e cache > clustering using Persistent Store). ? if yes, would be really obliged if > someone can provide some pointers as to how to set this up. > n/a > **** > > **3. **Is Persistent store an option for a Production environment ? > ( read somewhere that its experimental). > We have people running it in production for certain workloads and it is stable. However, the cache semantics would be FIFO and not LRU and that might not suite your workload. > **** > > ** > -- *Per Buer* CEO | Varnish Software AS Phone: +47 958 39 117 | Skype: per.buer We Make Websites Fly! -------------- next part -------------- An HTML attachment was scrubbed... URL: From soumendu_bhattacharya at non.agilent.com Wed Nov 7 16:48:45 2012 From: soumendu_bhattacharya at non.agilent.com (Soumendu Bhattacharya) Date: Wed, 7 Nov 2012 22:18:45 +0530 Subject: Hashing on a particular cookie value Message-ID: <009001cdbd07$c199b830$44cd2890$@non.agilent.com> Hi All, I am trying to hash varnish on a particular cookie value. My url remains the same , but the content changes depending on if you have this particular cookie and its value. I am stuck at how to evaluate that cookie value and pass it to hash function (passing it to hash function is not a problem - but how to evaluate the cookie value). Can this be done in default Varnish ? Any help will be greatly appreciated. Regards Soumendu -------------- next part -------------- An HTML attachment was scrubbed... URL: From pprocacci at datapipe.com Wed Nov 7 17:37:55 2012 From: pprocacci at datapipe.com (Paul A. Procacci) Date: Wed, 7 Nov 2012 11:37:55 -0600 Subject: Hashing on a particular cookie value In-Reply-To: <009001cdbd07$c199b830$44cd2890$@non.agilent.com> References: <009001cdbd07$c199b830$44cd2890$@non.agilent.com> Message-ID: <20121107173755.GO8791@nat.myhome> On Wed, Nov 07, 2012 at 10:18:45PM +0530, Soumendu Bhattacharya wrote: > Hi All, > > I am trying to hash varnish on a particular cookie > value. My url remains the same , but the content changes depending on > if you have this particular cookie and its value. I am stuck at how to > evaluate that cookie value and pass it to hash function (passing it to > hash function is not a problem - but how to evaluate the cookie value). > > > Can this be done in default Varnish ? > > Any help will be greatly appreciated. The following (untested) snippet might be what you are looking for? ############################## sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } if (req.http.cookie ~ "mycookie=") { set req.http.X-TMP = regsub(req.http.cookie, ".*mycookie=([^;]+);.*", "\1"); hash_data(req.http.X-TMP); remove req.http.X-TMP; } return (hash); } ############################## The `req` object is available for you to mess with in vcl_hash. ~Paul ________________________________ This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. From soumendu_bhattacharya at non.agilent.com Wed Nov 7 20:01:23 2012 From: soumendu_bhattacharya at non.agilent.com (Soumendu Bhattacharya) Date: Thu, 8 Nov 2012 01:31:23 +0530 Subject: Hashing on a particular cookie value In-Reply-To: <20121107173755.GO8791@nat.myhome> References: <009001cdbd07$c199b830$44cd2890$@non.agilent.com> <20121107173755.GO8791@nat.myhome> Message-ID: <00ae01cdbd22$ab41b400$01c51c00$@non.agilent.com> ============================================================================ ================== On Wed, Nov 07, 2012 at 10:18:45PM +0530, Soumendu Bhattacharya wrote: > Hi All, > > I am trying to hash varnish on a particular cookie > value. My url remains the same , but the content changes depending on > if you have this particular cookie and its value. I am stuck at how to > evaluate that cookie value and pass it to hash function (passing it to > hash function is not a problem - but how to evaluate the cookie value). > > > Can this be done in default Varnish ? > > Any help will be greatly appreciated. The following (untested) snippet might be what you are looking for? ############################## sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } if (req.http.cookie ~ "mycookie=") { set req.http.X-TMP = regsub(req.http.cookie, ".*mycookie=([^;]+);.*", "\1"); hash_data(req.http.X-TMP); remove req.http.X-TMP; } return (hash); } ############################## The `req` object is available for you to mess with in vcl_hash. ~Paul =================================================================== Thanks a lot Paul. Before I read this , I tried the following : hash_data(regsub(req.http.Cookie,"^.*?mycookie=([^;]*);*.*$" , "\1")); I guess this should also do the trick ? Regards Soumendu From simon at darkmere.gen.nz Wed Nov 7 20:50:51 2012 From: simon at darkmere.gen.nz (Simon Lyall) Date: Thu, 8 Nov 2012 09:50:51 +1300 (NZDT) Subject: Assert error in VRT_r_req_backend_healthy() Message-ID: I have just upgraded a couple of my caches from version 2.1 to 3.0.3 ( using centos5 RPMs). I notice that I'm getting a lot of crashes (about twice an hour on a lightly loaded machine) when previously I had none. My crashes all look like: Nov 7 20:21:13 harvest varnishd[3290]: Child (5139) died signal=6 Nov 7 20:21:13 harvest varnishd[3290]: Child (5139) Panic message: Assert error in VRT_r_req_backend_healthy(), cache_vrt_var.c line 539: Condition((sp->director) != NULL) not true. thread = (cache-worker) ident = Linux,2.6.18-308.16.1.el5,x86_64,-sfile,-smalloc,-hcritbit,epoll Backtrace: 0x42dc76: /usr/sbin/varnishd [0x42dc76] 0x438803: /usr/sbin/varnishd(VRT_r_req_backend_healthy+0xd3) [0x438803] 0x2aaaba6037dc: ./vcl.pi3D54nW.so [0x2aaaba6037dc] 0x434626: /usr/sbin/varnishd(VCL_deliver_method+0x46) [0x434626] 0x4179b3: /usr/sbin/varnishd [0x4179b3] 0x418938: /usr/sbin/varnishd(CNT_Session+0x8a8) [0x418938] 0x42f706: /usr/sbin/varnishd [0x42f706] 0x3acc80677d: /lib64/libpthread.so.0 [0x3acc80677d] 0x3acb8d3c1d: /lib64/libc.so.6(clone+0x6d) [0x3acb8d3c1d] sp = 0x2aaac7924008 { fd = 167, id = 167, xid = 121392249, client = 178.128.200.204 64256, step = STP_PREPRESP, handling = deliver, restarts = 0, esi_level = 0 flags = bodystatus = 3 ws = 0x2aaac7924080 { id = "sess Nov 7 20:21:13 harvest varnishd[3290]: child (5444) Started Nov 7 20:21:13 harvest varnishd[3290]: Child (5444) said Child starts Nov 7 20:21:13 harvest varnishd[3290]: Child (5444) said SMF.s0 mmap'ed 262144000 bytes of 262144000 Searching Around I came across this thread: http://www.gossamer-threads.com/lists/varnish/bugs/25391 but couldn't find an actual bug that matched to it. The servers are on the far side of the world from the origin so I would expect the odd heath failure, they are faily lightly loaded though ( only a couple of hundred hits/second max) My vcl_deliver looks like: ------------------- # vcl_deliver Body # if (resp.http.magicmarker) { /* Remove the magic marker */ unset resp.http.magicmarker; /* By definition we have a fresh object */ set resp.http.originalage = resp.http.Age; set resp.http.Age = "0"; } # Create temp variable header if (req.backend.healthy) { set resp.http.Backend-Healthy = "yes" ; } else { set resp.http.Backend-Healthy = "no" ; } # Debugging set resp.http.Cache-Info = "Object-Age=" + resp.http.originalage + " hits=" + obj.hits + " Cache-Host=" + server.hostname + " Backend-Host=" + req.backend + "healthy=" + resp.http.Backend-Healthy ; # Tidy some headers unset resp.http.X-Varnish; unset resp.http.Via; unset resp.http.originalage; unset resp.http.Age; unset resp.http.Backend-Healthy; ------------------- My backend probes mostly look like: ----- backend xx_xxx121 { .host = "xx.xx.xx.xx"; .host_header = "www.xx.xx"; .port = "80"; .probe = { .url = "/"; .timeout = 5s; .interval = 10s; .window = 10; .threshold = 6; .initial = 5; } } ---- -- Simon Lyall | Very Busy | Web: http://www.darkmere.gen.nz/ "To stay awake all night adds a day to your life" - Stilgar | eMT. From vstavrinov at gmail.com Thu Nov 8 08:23:57 2012 From: vstavrinov at gmail.com (Vladimir Stavrinov) Date: Thu, 8 Nov 2012 12:23:57 +0400 Subject: logging request time In-Reply-To: References: <20121023133358.GA31642@mana.playfast.ru> <20121024081746.GD24585@err.no> <20121025150115.GA24645@mana.playfast.ru> Message-ID: <20121108082357.GG3948@mana.playfast.ru> On Wed, Oct 31, 2012 at 10:05:52PM +0100, Jorge Ner?n wrote: > Well, currently I use an indirect method, the ss utility & a quick'n'dirty perl one liner: > > ss -i -t 'sport = :80' |perl -e 'while (<>) { if (m/send (.*?)([M|K|]bps) /){ ($s,$u)=($1,$2); $s=$s*1000000 if ("Mbps" > eq "$u"); $s=$s*1000 if ("Kbps" eq "$u"); $t=$t+$s; $c=$c+1}} print "$t total bps, $c clients: ", ($t/$c) , " avg. > bps\n" ' > > The "output" looks like: > > 1352182000 total bps, 539 clients: 2508686.45640074 avg. bps > > I'm working on a munin plugin with this idea, as I'm testing different tcp congestion avoidance algorithms and playing > with initcwnd & initrwnd and I like to keep track of the changes. I don't understand what for all of this. It is totally off topic. What we need is the time of each request to write to ncsa log file similar to what exists in apache and nginx log. There are lot of others parameters in this file that are needed all together for using by many kinds of log analyzers. It should be done not by external tools, but by varnish itself like other web or proxy servers are doing. And I don't understand why this simple and necessary thing is not implemented yet. -- *************************** ## Vladimir Stavrinov ## vstavrinov at gmail.com *************************** From lasse.karstensen at gmail.com Thu Nov 8 09:32:24 2012 From: lasse.karstensen at gmail.com (Lasse Karstensen) Date: Thu, 8 Nov 2012 10:32:24 +0100 Subject: Assert error in VRT_r_req_backend_healthy() In-Reply-To: References: Message-ID: <20121108093223.GF30742@sierra.hyse.org> Simon Lyall: > I have just upgraded a couple of my caches from version 2.1 to 3.0.3 > ( using centos5 RPMs). > I notice that I'm getting a lot of crashes (about twice an hour on a > lightly loaded machine) when previously I had none. [..] > Nov 7 20:21:13 harvest varnishd[3290]: Child (5139) died signal=6 > Nov 7 20:21:13 harvest varnishd[3290]: Child (5139) Panic message: > Assert error in VRT_r_req_backend_healthy(), cache_vrt_var.c line > 539: Condition((sp->director) != NULL) not true. thread = > (cache-worker) ident = [..] > # vcl_deliver Body [..] > # Create temp variable header > if (req.backend.healthy) { > set resp.http.Backend-Healthy = "yes" ; > } else { > set resp.http.Backend-Healthy = "no" ; > } I believe this is caused by using req.backend.healthy in vcl_deliver. Suggest you either remove this debug header entirely, or use req.backend.healthy in vcl_recv to set some other req.http header that can be checked on in vcl_deliver. -- Lasse Karstensen Varnish Software AS http://www.varnish-software.com/ From pprocacci at datapipe.com Thu Nov 8 10:07:56 2012 From: pprocacci at datapipe.com (Paul A. Procacci) Date: Thu, 8 Nov 2012 04:07:56 -0600 Subject: Hashing on a particular cookie value In-Reply-To: <00ae01cdbd22$ab41b400$01c51c00$@non.agilent.com> References: <009001cdbd07$c199b830$44cd2890$@non.agilent.com> <20121107173755.GO8791@nat.myhome> <00ae01cdbd22$ab41b400$01c51c00$@non.agilent.com> Message-ID: <20121108100756.GR8791@nat.myhome> > Thanks a lot Paul. Before I read this , I tried the following : > > hash_data(regsub(req.http.Cookie,"^.*?mycookie=([^;]*);*.*$" , "\1")); Your regex differs than mine. One negligible difference and one that I'll focus on. The negligible difference being the anchors "^" and "$". They aren't necessary. For reference, my regex was: regsub(req.http.cookie, ".*mycookie=([^;]+);.*", ^ ^ The difference is that I'm looking for a value in my regex, and you don't care if there is a value in yours. '+' vs '*'. Your regex matches: mycookie= mycookie=a mycookie=abc ... My regex _doesn't_ match: mycookie= If you want to hash on an empty cookie, then your regex is what you want. Otherwise, perhaps mine is what you want. You know your application best, and how you want to store your data is entirely dependant upon you. ;P ~G'Night > I guess this should also do the trick ? > > Regards > > Soumendu > > ________________________________ This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. From soumendu_bhattacharya at non.agilent.com Thu Nov 8 12:48:20 2012 From: soumendu_bhattacharya at non.agilent.com (Soumendu Bhattacharya) Date: Thu, 8 Nov 2012 18:18:20 +0530 Subject: Hashing on a particular cookie value In-Reply-To: <20121108100756.GR8791@nat.myhome> References: <009001cdbd07$c199b830$44cd2890$@non.agilent.com> <20121107173755.GO8791@nat.myhome> <00ae01cdbd22$ab41b400$01c51c00$@non.agilent.com> <20121108100756.GR8791@nat.myhome> Message-ID: <004401cdbdaf$56615c00$03241400$@non.agilent.com> ============================================================================ ================================== Your regex differs than mine. One negligible difference and one that I'll focus on. The negligible difference being the anchors "^" and "$". They aren't necessary. For reference, my regex was: regsub(req.http.cookie, ".*mycookie=([^;]+);.*", ^ ^ The difference is that I'm looking for a value in my regex, and you don't care if there is a value in yours. '+' vs '*'. Your regex matches: mycookie= mycookie=a mycookie=abc ... My regex _doesn't_ match: mycookie= If you want to hash on an empty cookie, then your regex is what you want. Otherwise, perhaps mine is what you want. ============================================================================ ======================= Thanks - a lot - I will change my regex :) I certainly don't want to hash on empty cookie. Regards Soumendu From kokoniimasu at gmail.com Fri Nov 9 04:44:21 2012 From: kokoniimasu at gmail.com (kokoniimasu) Date: Fri, 9 Nov 2012 13:44:21 +0900 Subject: Iterate for parameter Message-ID: Hi, All, I'm making a new feature for vmod-parsereq. New feature is calling VCL subroutine for each parameter(POST, GET, COOKIE and ...) --sample vcl (iterate for all GET parameter) import parsereq; import std; sub test{ parsereq.get_read_next(); set req.http.hoge = req.http.hoge + parsereq.get_read_cur() + ":"; set req.http.hoge = req.http.hoge + parsereq.get_header(parsereq.get_read_cur()); } sub test2{ parsereq.get_read_next(); set req.http.hoge2 = req.http.hoge2 + parsereq.get_read_cur() + ":"; set req.http.hoge2 = req.http.hoge2 + parsereq.get_header(parsereq.get_read_cur()); } sub vcl_recv{ parsereq.init(); set req.http.hoge= "[start]"; C{ Vmod_Func_parsereq.get_read_iterate(sp, (const char*)VGC_function_test); }C set req.http.hoge = req.http.hoge + "[end]"; set req.http.hoge2= "[start]"; C{ Vmod_Func_parsereq.get_read_iterate(sp, (const char*)VGC_function_test2); }C set req.http.hoge2 = req.http.hoge2 + "[end]"; std.syslog(6,req.http.hoge); std.syslog(6,req.http.hoge2); } ----------------------- http://192.168.1.199:6081/?x=aa&y=bb --result Oct 24 01:12:39 localhost varnishd[30214]: [start]y:bb x:aa [end] Oct 24 01:12:39 localhost varnishd[30214]: [start]y:bb x:aa [end] ----------------------- http://192.168.1.199:6081/?x=aa&y=bb&z=cc --result Oct 24 01:12:56 localhost varnishd[30214]: [start]z:cc y:bb x:aa [end] Oct 24 01:12:56 localhost varnishd[30214]: [start]z:cc y:bb x:aa [end] code: https://github.com/xcir/libvmod-parsereq/tree/future-iterate What do you think about this syntax? Regards, -- Syohei Tanaka(@xcir) http://xcir.net/ (:3[__]) From Dhrubajyoti.Biswas at headstrong.com Fri Nov 9 14:22:43 2012 From: Dhrubajyoti.Biswas at headstrong.com (Dhrubajyoti Biswas) Date: Fri, 9 Nov 2012 19:52:43 +0530 Subject: Issues in Ban Message-ID: <25B8F07CD7C55344B8B81FA8852C4238ACB5CAB3AD@MBXNDA.headstrong.com> Hi I am new to Varnish, so need help to understand ban. We have few urls like below and we are banning them using ban.url command in varnishadm. But seems like the cache objects are not getting cleared. Please help us to understand if we are going something wrong. URL :: http://stg1-www.home.agilent.com/en/pc-1000001773%3Aepsg%3Apgr/psa-series-spectrum-analyzer?nid=-536902959.0&cc=IN&lc=eng Command :: ./varnishadm -T :8965 ban.url 1000001773:epsg:pgr Also, the second colume value in ban.list command is keep on increasing. Please let us know why that number is increasing. 1352469674.043671 450 req.url ~ 1000004299:epsg:pro 1352469674.043671 490 req.url ~ 1000004299:epsg:pro Regards, Dhrub Agilent AWS | +919810076994 ________________________________ ***The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review,retransmission,dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.*** -------------- next part -------------- An HTML attachment was scrubbed... URL: From Dhrubajyoti.Biswas at headstrong.com Fri Nov 9 15:28:21 2012 From: Dhrubajyoti.Biswas at headstrong.com (Dhrubajyoti Biswas) Date: Fri, 9 Nov 2012 20:58:21 +0530 Subject: Recall: Issues in Ban Message-ID: <25B8F07CD7C55344B8B81FA8852C4238ACB5CAB493@MBXNDA.headstrong.com> Dhrubajyoti Biswas would like to recall the message, "Issues in Ban". ***The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review,retransmission,dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.*** From R.Guest at gns.cri.nz Tue Nov 13 03:51:28 2012 From: R.Guest at gns.cri.nz (Richard Guest) Date: Tue, 13 Nov 2012 16:51:28 +1300 Subject: Does hash_always_miss remove older objects? Message-ID: According to: https://www.varnish-cache.org/trac/wiki/VCLExampleEnableForceRefresh When using "set req.hash_always_miss = true"... > The downside of this approach is that it will not free up the older objects until they expire, as of Varnish 3.0.2. This is considered a flaw and a fix is expected. Has this behaviour been fixed? Thanks, Rich Notice: This email and any attachments are confidential. If received in error please destroy and immediately notify us. Do not copy or disclose the contents. -------------- next part -------------- An HTML attachment was scrubbed... URL: From rowan at jetboy.co.uk Wed Nov 14 13:16:41 2012 From: rowan at jetboy.co.uk (Rowan @ Jetboy) Date: Wed, 14 Nov 2012 13:16:41 -0000 Subject: How to pipe varnishncsa entries? In-Reply-To: References: Message-ID: <002101cdc26a$492473a0$db6d5ae0$@co.uk> ?Ubuntu 12 x64 Server, Varnish 3 I have varnishncsa happily logging away to itself with the following in /etc/default/varnishncsa DAEMON_OPTS="-a \ -c \ -D \ -F '%{Host}i %{X-Forwarded-For}i %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"' \ -m 'TxHeader:Server: Varnish/3' \ -P ${PIDFILE} \ -w /var/log/varnish/varnishncsa.log" and by changing: if start-stop-daemon --start --quiet --pidfile ${PIDFILE} \ --chuid $USER --exec ${DAEMON} -- ${DAEMON_OPTS} \ > ${output} 2>&1; then to: if bash -c "start-stop-daemon --start --quiet --pidfile ${PIDFILE} \ --chuid $USER --exec ${DAEMON} -- ${DAEMON_OPTS} \ > ${output} 2>&1"; then in /etc/init.d/varnishncsa to allow the sending of parameters with whitespace in from DAEMON_OPTS. In *addition* to logging locally, I'd like to pipe the same custom format log entries to syslog for remote centralised logging, using this pipe: |/usr/bin/logger -t varnishncsa.log -p local0.info Is this possible? If so, how? Ideally I'd like the command within DAEMON_OPTS, but my efforts so far haven't resulted in any output to syslog. I'm already successfully using a version of the same pipe to put Apache logs to syslog. From pprocacci at datapipe.com Wed Nov 14 14:58:59 2012 From: pprocacci at datapipe.com (Paul A. Procacci) Date: Wed, 14 Nov 2012 08:58:59 -0600 Subject: How to pipe varnishncsa entries? In-Reply-To: <002101cdc26a$492473a0$db6d5ae0$@co.uk> References: <002101cdc26a$492473a0$db6d5ae0$@co.uk> Message-ID: <20121114145858.GV8791@nat.myhome> On Wed, Nov 14, 2012 at 01:16:41PM +0000, Rowan @ Jetboy wrote: > ?Ubuntu 12 x64 Server, Varnish 3 > > I have varnishncsa happily logging away to itself with the following in > /etc/default/varnishncsa > > DAEMON_OPTS="-a \ > -c \ > -D \ > -F '%{Host}i %{X-Forwarded-For}i %h %l %u %t \"%r\" %s %b > \"%{Referer}i\" \"%{User-agent}i\"' \ > -m 'TxHeader:Server: Varnish/3' \ > -P ${PIDFILE} \ > -w /var/log/varnish/varnishncsa.log" > > and by changing: > > if start-stop-daemon --start --quiet --pidfile ${PIDFILE} \ > --chuid $USER --exec ${DAEMON} -- ${DAEMON_OPTS} \ > > ${output} 2>&1; then > > to: > > if bash -c "start-stop-daemon --start --quiet --pidfile ${PIDFILE} \ > --chuid $USER --exec ${DAEMON} -- ${DAEMON_OPTS} \ > > ${output} 2>&1"; then > > in /etc/init.d/varnishncsa to allow the sending of parameters with > whitespace in from DAEMON_OPTS. > > In *addition* to logging locally, I'd like to pipe the same custom format > log entries to syslog for remote centralised logging, using this pipe: > > |/usr/bin/logger -t varnishncsa.log -p local0.info > > Is this possible? If so, how? Ideally I'd like the command within > DAEMON_OPTS, but my efforts so far haven't resulted in any output to syslog. > I'm already successfully using a version of the same pipe to put Apache logs > to syslog. I'm not familiar with Ubuntu as I use FreeBSD myself, nor bash, as I primarily use csh, but after reading the start-stop-daemon manpage, there doesn't seem to be any reason why you couldn't tee(1) stdout. I imagine something like the following would work but without having an actual Ubuntu machine to test on I'm not 100% sure. if start-stop-daemon --start --quiet --pidfile ${PIDFILE} \ --chuid $USER --exec ${DAEMON} -- ${DAEMON_OPTS} 2>&1 \ | tee -a ${output} \ | /usr/bin/logger -t varnishncsa.log -p local0.info ~Paul ________________________________ This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. From enno at tty.nl Thu Nov 15 14:52:33 2012 From: enno at tty.nl (Enno van Amerongen) Date: Thu, 15 Nov 2012 15:52:33 +0100 Subject: sharding with varnish: generating director identifier from an integer Message-ID: <20121115145233.f3267502@groupware.tty.nl> Hi List, My coworkers and I are working on a sharding VMOD and we got to the point it's actually working (woohoo!). Now, our implementation is pretty straightforward: - get id from url - do a "id mod n" to pick correct shard ( = director) - set req.backend = shardN Right now we have a very long if/elsif codepath that looks like this: var.set_int("shard", sharding.get_mod_n(req.url,420)); if (var.get_int("shard") == 0) { set req.backend = shard0; set req.http.X-Varnish-Backend = "shard0"; } elsif (var.get_int("shard") == 1) { set req.backend = shard1; set req.http.X-Varnish-Backend = "shard1"; } ... So my question is, is it possible to *generate* the correct backend director, so we only need one line of VCL, instead of the long if/else, like so: set req.backend = shard + sharding.get_mod_n(req.url,420); Yet, this does not work, maybe there's a workaround, or maybe someone else found a solution? Thanks in advance! Regards, Enno -------------- next part -------------- An HTML attachment was scrubbed... URL: From perbu at varnish-software.com Thu Nov 15 15:22:54 2012 From: perbu at varnish-software.com (Per Buer) Date: Thu, 15 Nov 2012 16:22:54 +0100 Subject: sharding with varnish: generating director identifier from an integer In-Reply-To: <20121115145233.f3267502@groupware.tty.nl> References: <20121115145233.f3267502@groupware.tty.nl> Message-ID: Hi, On Thu, Nov 15, 2012 at 3:52 PM, Enno van Amerongen wrote: > ** > Hi List, > > My coworkers and I are working on a sharding VMOD and we got to the point > it's actually working (woohoo!). > > Now, our implementation is pretty straightforward: > > - get id from url > - do a "id mod n" to pick correct shard ( = director) > - set req.backend = shardN > Any particular reason you didn't use the client director? This is more or less exactly what it does. You would set client.identity to the ID you pick and Varnish will use a hash algorithm to consistently pick a backend from the backends in the director. -- *Per Buer* CEO | Varnish Software AS Phone: +47 958 39 117 | Skype: per.buer We Make Websites Fly! -------------- next part -------------- An HTML attachment was scrubbed... URL: From enno at tty.nl Thu Nov 15 16:21:35 2012 From: enno at tty.nl (Enno van Amerongen) Date: Thu, 15 Nov 2012 17:21:35 +0100 Subject: sharding with varnish: generating director identifier from an integer In-Reply-To: Message-ID: <20121115162135.3ccd6a52@groupware.tty.nl> From: Per Buer [mailto:perbu at varnish-software.com] Hi, On Thu, Nov 15, 2012 at 3:52 PM, Enno van Amerongen wrote: Hi List, My coworkers and I are working on a sharding VMOD and we got to the point it's actually working (woohoo!). Now, our implementation is pretty straightforward: - get id from url - do a "id mod n" to pick correct shard ( = director) - set req.backend = shardN Any particular reason you didn't use the client director? This is more or less exactly what it does. You would set client.identity to the ID you pick and Varnish will use a hash algorithm to consistently pick a backend from the backends in the director. yes, we didn't use it because we also need to be able to determine which backend should receive which images. We aren't only sharding the requests, but also the storage. Enno -------------- next part -------------- An HTML attachment was scrubbed... URL: From trompetter at titandsl.de Sat Nov 17 07:11:01 2012 From: trompetter at titandsl.de (Reinhard Trompetter) Date: Sat, 17 Nov 2012 08:11:01 +0100 Subject: single IP and domain and multiple backens Message-ID: <50A73885.10807@titandsl.de> Hi, I am a newbie at varnish and have the following problem: I want to redirect traffic to different servers (Moodle, Drupal) within a private network. Is the following setup feasible (and if so, what would the VCL look like): 1. "www.medmoodle.de" (with public IP adress) from the internet to my router 2. When a request is made to "www.medmoodle.de/moodle" varnish sends the request to the url "www.medmoodle.de/moodle" on private IP 192.168.1.x 3. When a request is made to "www.medmoodle.de/drupal" varnish sends the request to the url "www.medmoodle.de/drupal" on private IP 192.168.1.y Regards Reinhard From perbu at varnish-software.com Sat Nov 17 09:48:30 2012 From: perbu at varnish-software.com (Per Buer) Date: Sat, 17 Nov 2012 10:48:30 +0100 Subject: single IP and domain and multiple backens In-Reply-To: <50A73885.10807@titandsl.de> References: <50A73885.10807@titandsl.de> Message-ID: Hi Reinhard, On Sat, Nov 17, 2012 at 8:11 AM, Reinhard Trompetter wrote: > > Is the following setup feasible (and if so, what would the VCL look like): > > 1. "www.medmoodle.de" (with public IP adress) from the internet to my > router > Yes. But this hasn't really much to do with Varnish. :-) 2. When a request is made to "www.medmoodle.de/moodle" varnish sends the > request to the url "www.medmoodle.de/moodle" on private IP 192.168.1.x > in vcl_recv: if (req.url ~ "^/moodle") { set req.backend = moodle; 3. When a request is made to "www.medmoodle.de/drupal" varnish sends the > request to the url "www.medmoodle.de/drupal" on private IP 192.168.1.y > } else if (req.url ~ "^/drupal") { set req.backend = drupal; } You need to define two backends. Please see the tutorial or "man vcl" for information on how to do this. -- *Per Buer* CEO | Varnish Software AS Phone: +47 958 39 117 | Skype: per.buer We Make Websites Fly! -------------- next part -------------- An HTML attachment was scrubbed... URL: From zeeshan at infoshield.info Sun Nov 18 18:54:22 2012 From: zeeshan at infoshield.info (Zeeshan Ali Shah) Date: Sun, 18 Nov 2012 19:54:22 +0100 Subject: memory vs disk cache for large media files Message-ID: Hi, I need suggestion for media cdn using varnish . Our design is to use VPS on different areas and install varnish for cdn type media delivery . Since most of the VPS has less memory around 512 MB but good disk size like 10 GB , i am thinking to use Disk for cache instead of RAM . Any suggestion ? BR Zeeshan -------------- next part -------------- An HTML attachment was scrubbed... URL: From Roy.Narayan at au.harveynorman.com Sun Nov 18 21:24:31 2012 From: Roy.Narayan at au.harveynorman.com (Narayan, Roy) Date: Mon, 19 Nov 2012 08:24:31 +1100 Subject: Limiting users to the website Message-ID: <96123FEFFB5DA840A878E3F96DD382CBA2AF578767@AUDCCFOMX005.CORP.HARVEYNORMAN.COM> Hi All, I am looking to limit users to the website once we hit capacity. Any new user will be directed to a "busy page" whilst existing users can continue on the site. How can this be achieved via varnish ? Any suggestions/solutions will be much appreciated. Thanks, Roy N. ************************************************************************************************ DISCLAIMER Confidential Communication: This email and any attachments are intended for the addressee(s) only and are confidential. They may contain legally privileged or copyright material. If you are not the intended recipient, please contact the sender immediately by reply email and delete this email and any attachments. You must not read, copy, use, distribute or disclose the contents of this email without consent of Harvey Norman Holdings Limited ACN 003 237 545 (and its related subsidiaries) ("Harvey Norman") does not accept responsibility for any unauthorised use or reliance on the contents of this email. Harvey Norman does not represent or warrant that the integrity of this email has been maintained or that it is free from errors, viruses, interceptions or interference. Any views expressed by the sender do not necessarily represent the views of Harvey Norman. This notice should not be removed from this email. ************************************************************************************************ -------------- next part -------------- An HTML attachment was scrubbed... URL: From jc.bedier at gmail.com Sun Nov 18 21:33:48 2012 From: jc.bedier at gmail.com (Jean-Christian BEDIER) Date: Sun, 18 Nov 2012 22:33:48 +0100 Subject: memory vs disk cache for large media files In-Reply-To: References: Message-ID: <-4687666972488130710@unknownmsgid> Could you confirm that your VPS has acceptable delay to access to local disk storage ? Le 18 nov. 2012 ? 19:55, Zeeshan Ali Shah a ?crit : > Hi, > I need suggestion for media cdn using varnish . > > Our design is to use VPS on different areas and install varnish for cdn type media delivery . > > Since most of the VPS has less memory around 512 MB but good disk size like 10 GB , i am thinking to use Disk for cache instead of RAM . > > > Any suggestion ? > > BR > > Zeeshan > _______________________________________________ > varnish-misc mailing list > varnish-misc at varnish-cache.org > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc From simon at darkmere.gen.nz Sun Nov 18 22:16:49 2012 From: simon at darkmere.gen.nz (Simon Lyall) Date: Mon, 19 Nov 2012 11:16:49 +1300 (NZDT) Subject: Limiting users to the website In-Reply-To: <96123FEFFB5DA840A878E3F96DD382CBA2AF578767@AUDCCFOMX005.CORP.HARVEYNORMAN.COM> References: <96123FEFFB5DA840A878E3F96DD382CBA2AF578767@AUDCCFOMX005.CORP.HARVEYNORMAN.COM> Message-ID: On Mon, 19 Nov 2012, Narayan, Roy wrote: > I am looking to limit users to the website once we hit capacity. Any new user will be directed to a ?busy page? whilst existing > users can continue on the site. > > How can this be achieved via varnish ? > > Any suggestions/solutions will be much appreciated. Give everybody a short-lived cookie. If they have the cookie then serve them pages as normal. "New" users won't have the cookie, so make the use a different backend and make that backend "fail first" with a pretty error page. -- Simon Lyall | Very Busy | Web: http://www.darkmere.gen.nz/ "To stay awake all night adds a day to your life" - Stilgar | eMT. From Roy.Narayan at au.harveynorman.com Sun Nov 18 22:42:00 2012 From: Roy.Narayan at au.harveynorman.com (Narayan, Roy) Date: Mon, 19 Nov 2012 09:42:00 +1100 Subject: Limiting users to the website In-Reply-To: References: <96123FEFFB5DA840A878E3F96DD382CBA2AF578767@AUDCCFOMX005.CORP.HARVEYNORMAN.COM> Message-ID: <96123FEFFB5DA840A878E3F96DD382CBA2AF578831@AUDCCFOMX005.CORP.HARVEYNORMAN.COM> Hi Simon, Thanks for your reply. I am looking to achieve the solution within our existing infrastructure and without performing much changes to the current application deployment. I was trialling with "first_byte_timeout" which if reached will fall into "vcl_error" and then serving a busy page from there. However there are certain hurdles (how to distinguish a new user with existing and other things that I have not been able to think of) Is there anything in this regard that you or someone may have done ? Thanks Roy N. -----Original Message----- From: varnish-misc-bounces at varnish-cache.org [mailto:varnish-misc-bounces at varnish-cache.org] On Behalf Of Simon Lyall Sent: Monday, 19 November 2012 9:17 AM To: varnish-misc at varnish-cache.org Subject: Re: Limiting users to the website On Mon, 19 Nov 2012, Narayan, Roy wrote: > I am looking to limit users to the website once we hit capacity. Any > new user will be directed to a ?busy page? whilst existing users can continue on the site. > > How can this be achieved via varnish ? > > Any suggestions/solutions will be much appreciated. Give everybody a short-lived cookie. If they have the cookie then serve them pages as normal. "New" users won't have the cookie, so make the use a different backend and make that backend "fail first" with a pretty error page. -- Simon Lyall | Very Busy | Web: http://www.darkmere.gen.nz/ "To stay awake all night adds a day to your life" - Stilgar | eMT. ************************************************************************************************ DISCLAIMER Confidential Communication: This email and any attachments are intended for the addressee(s) only and are confidential. They may contain legally privileged or copyright material. If you are not the intended recipient, please contact the sender immediately by reply email and delete this email and any attachments. You must not read, copy, use, distribute or disclose the contents of this email without consent of Harvey Norman Holdings Limited ACN 003 237 545 (and its related subsidiaries) ("Harvey Norman") does not accept responsibility for any unauthorised use or reliance on the contents of this email. Harvey Norman does not represent or warrant that the integrity of this email has been maintained or that it is free from errors, viruses, interceptions or interference. Any views expressed by the sender do not necessarily represent the views of Harvey Norman. This notice should not be removed from this email. ************************************************************************************************ From joshua.strebel at gmail.com Mon Nov 19 04:50:46 2012 From: joshua.strebel at gmail.com (joshua strebel) Date: Sun, 18 Nov 2012 21:50:46 -0700 Subject: Varnish lightweight firewall, IP logging and temp ban Message-ID: <2B840E30-1189-42D9-9D6A-5066BA918C59@gmail.com> I am looking for the best way to achieve the following while keeping latency as low as possible. We want to track all IP's accessing a certain login page, call it login.php. We want to track over a 2-3 minute period all the IP that attempt this url, if a certain threshold is reached.. say 10 tries, we wish to drop the request or return a non 40x response. Memcached in Varnish may work :http://sodabrew.com/2012/01/introducing-varnish-memcached-module.html We could increment a key/value, and check it on every request.. if threshold reach return error 405. We thought about also creating a simple fcgi backend to send all login.php requests to.. and in that backend do it all with PERL/Memcached or whatnot. Proxy the request through if valid, return 40x back to varnish if not. However I am not sure if varnish supports a fcgi backend without having to load a full web server which may add overhead to the request time. Memcached is handy as we can utilize the ttl to only temp ban an IP for x seconds. Essentially we want a more fluid way of blocking incoming traffic for a time period, and the unblocking it later. Our firewalls are more stringent, it is blocked or not.. not time release or what not. Sorry of this is all over the place, just curious what the best approach would be inside of varnish to handle this. -------------- next part -------------- An HTML attachment was scrubbed... URL: From perbu at varnish-software.com Mon Nov 19 08:41:13 2012 From: perbu at varnish-software.com (Per Buer) Date: Mon, 19 Nov 2012 09:41:13 +0100 Subject: Limiting users to the website In-Reply-To: <96123FEFFB5DA840A878E3F96DD382CBA2AF578831@AUDCCFOMX005.CORP.HARVEYNORMAN.COM> References: <96123FEFFB5DA840A878E3F96DD382CBA2AF578767@AUDCCFOMX005.CORP.HARVEYNORMAN.COM> <96123FEFFB5DA840A878E3F96DD382CBA2AF578831@AUDCCFOMX005.CORP.HARVEYNORMAN.COM> Message-ID: Hi Roy, I think the solution outlined could be implemented without changing your application at all, actually. Once you are nearing capacity just signal it to Varnish and new users will be kept in a holding pattern purely in Varnish. Your application can be completely unaltered. The only change outside Varnish would be the probe that detects that you are nearing full capacity which sounds like a cronjob or some equivalent. Cheers, Per. On Sun, Nov 18, 2012 at 11:42 PM, Narayan, Roy < Roy.Narayan at au.harveynorman.com> wrote: > Hi Simon, > > Thanks for your reply. > > I am looking to achieve the solution within our existing infrastructure > and without performing much changes to the current application deployment. > > I was trialling with "first_byte_timeout" which if reached will fall into > "vcl_error" and then serving a busy page from there. However there are > certain hurdles (how to distinguish a new user with existing and other > things that I have not been able to think of) > > Is there anything in this regard that you or someone may have done ? > > Thanks > Roy N. > > > > -----Original Message----- > From: varnish-misc-bounces at varnish-cache.org [mailto: > varnish-misc-bounces at varnish-cache.org] On Behalf Of Simon Lyall > Sent: Monday, 19 November 2012 9:17 AM > To: varnish-misc at varnish-cache.org > Subject: Re: Limiting users to the website > > On Mon, 19 Nov 2012, Narayan, Roy wrote: > > I am looking to limit users to the website once we hit capacity. Any > > new user will be directed to a ?busy page? whilst existing users can > continue on the site. > > > > How can this be achieved via varnish ? > > > > Any suggestions/solutions will be much appreciated. > > Give everybody a short-lived cookie. If they have the cookie then serve > them pages as normal. > > "New" users won't have the cookie, so make the use a different backend and > make that backend "fail first" with a pretty error page. > > > -- > Simon Lyall | Very Busy | Web: http://www.darkmere.gen.nz/ "To stay > awake all night adds a day to your life" - Stilgar | eMT. > > > ************************************************************************************************ > DISCLAIMER > > Confidential Communication: This email and any attachments are intended > for the addressee(s) only and are confidential. They may contain legally > privileged or copyright material. If you are not the intended recipient, > please contact the sender immediately by reply email and delete this email > and any attachments. You must not read, copy, use, distribute or disclose > the contents of this email without consent of Harvey Norman Holdings > Limited ACN 003 237 545 (and its related subsidiaries) ("Harvey Norman") > does not accept responsibility for any unauthorised use or reliance on the > contents of this email. > > Harvey Norman does not represent or warrant that the integrity of this > email has been maintained or that it is free from errors, viruses, > interceptions or interference. Any views expressed by the sender do not > necessarily represent the views of Harvey Norman. > > This notice should not be removed from this email. > > ************************************************************************************************ > _______________________________________________ > varnish-misc mailing list > varnish-misc at varnish-cache.org > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc -- *Per Buer* CEO | Varnish Software AS Phone: +47 958 39 117 | Skype: per.buer We Make Websites Fly! -------------- next part -------------- An HTML attachment was scrubbed... URL: From me at ibotty.net Mon Nov 19 09:31:05 2012 From: me at ibotty.net (me at ibotty.net) Date: Mon, 19 Nov 2012 10:31:05 +0100 Subject: Varnish lightweight firewall, IP logging and temp ban In-Reply-To: <2B840E30-1189-42D9-9D6A-5066BA918C59@gmail.com> References: <2B840E30-1189-42D9-9D6A-5066BA918C59@gmail.com> Message-ID: <50A9FC59.4030404@ibotty.net> hi, > Essentially we want a more fluid way of blocking incoming traffic for > a time period, and the unblocking it later. Our firewalls are more > stringent, it is blocked or not.. not time release or what not. fail2ban can be configured to block a specific ip if their request reaches a certain threshold in a specific time, so this might suffice and will be easier to implement. i don't know whether it's possible to configure fail2ban to not block but forward the request to a different webserver serving a static error page instead. good luck, tobias florek From tfheen at varnish-software.com Mon Nov 19 11:55:21 2012 From: tfheen at varnish-software.com (Tollef Fog Heen) Date: Mon, 19 Nov 2012 12:55:21 +0100 Subject: logging request time In-Reply-To: <20121108082357.GG3948@mana.playfast.ru> References: <20121023133358.GA31642@mana.playfast.ru> <20121024081746.GD24585@err.no> <20121025150115.GA24645@mana.playfast.ru> <20121108082357.GG3948@mana.playfast.ru> Message-ID: <20121119115521.GC5188@err.no> ]] Vladimir Stavrinov > It should be done not by external tools, but by varnish > itself like other web or proxy servers are doing. And I don't > understand why this simple and necessary thing is not implemented yet. You're asking for this to be written to a NCSA log file, this is already done by an external tool ? varnishncsa. The reason for features not being implemented is usually either that nobody has asked for it, at least not anybody with either a patch or an offer to pay for its implementation. (In this case, it would have been a pretty small change, except for that ReqEnd in master seems to have changed format without me noticing.) -- Tollef Fog Heen Technical lead | Varnish Software AS t: +47 21 98 92 64 We Make Websites Fly! From mhettwer at team.mobile.de Mon Nov 19 13:25:13 2012 From: mhettwer at team.mobile.de (Hettwer, Marian) Date: Mon, 19 Nov 2012 13:25:13 +0000 Subject: logging request time In-Reply-To: <20121119115521.GC5188@err.no> Message-ID: <6DD1CF2A31C9724E9425CDB5511A92FC1BC1A0A3@DUB-EXDDA-S12.corp.ebay.com> On 19.11.12 12:55, "Tollef Fog Heen" wrote: >]] Vladimir Stavrinov > >> It should be done not by external tools, but by varnish >> itself like other web or proxy servers are doing. And I don't >> understand why this simple and necessary thing is not implemented yet. > >You're asking for this to be written to a NCSA log file, this is already >done by an external tool ? varnishncsa. The reason for features not >being implemented is usually either that nobody has asked for it, at >least not anybody with either a patch or an offer to pay for its >implementation. (In this case, it would have been a pretty small >change, except for that ReqEnd in master seems to have changed format >without me noticing.) I've seen a patch in trac floating around for varnish 2.1. I myself would love to have this feature in varnishncsa. I'm missing it quite a bit. But I'll also shut up, since I don't have a patch :) Cheers, ./Marian From zeeshan at infoshield.info Mon Nov 19 13:51:28 2012 From: zeeshan at infoshield.info (Zeeshan Ali Shah) Date: Mon, 19 Nov 2012 14:51:28 +0100 Subject: memory vs disk cache for large media files In-Reply-To: <-4687666972488130710@unknownmsgid> References: <-4687666972488130710@unknownmsgid> Message-ID: With a very basic bench mark i go this info -- seems good what do you think ? dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync 16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied, 3.49881 s, 307 MB/s Zeeshan On Sun, Nov 18, 2012 at 10:33 PM, Jean-Christian BEDIER wrote: > Could you confirm that your VPS has acceptable delay to access to > local disk storage ? > > > > > > Le 18 nov. 2012 ? 19:55, Zeeshan Ali Shah a > ?crit : > > > Hi, > > I need suggestion for media cdn using varnish . > > > > Our design is to use VPS on different areas and install varnish for cdn > type media delivery . > > > > Since most of the VPS has less memory around 512 MB but good disk size > like 10 GB , i am thinking to use Disk for cache instead of RAM . > > > > > > Any suggestion ? > > > > BR > > > > Zeeshan > > _______________________________________________ > > varnish-misc mailing list > > varnish-misc at varnish-cache.org > > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc > -------------- next part -------------- An HTML attachment was scrubbed... URL: From me at ibotty.net Mon Nov 19 13:57:23 2012 From: me at ibotty.net (me at ibotty.net) Date: Mon, 19 Nov 2012 14:57:23 +0100 Subject: memory vs disk cache for large media files In-Reply-To: References: <-4687666972488130710@unknownmsgid> Message-ID: <50AA3AC3.3010208@ibotty.net> hi, > dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync unfortunately that does not tell you what delay you have to expect. varnish will in most cases only have many scattered reads. so you better test those. be sure to test for a longer time. you might be on the same computer as a virtual machine that has a disk-intensive workload only during specific times. good luck though, tobias florek From ottolski at web.de Mon Nov 19 18:57:39 2012 From: ottolski at web.de (Sascha Ottolski) Date: Mon, 19 Nov 2012 19:57:39 +0100 Subject: How to calculate cache file usage (for Nagios monitoring) in varnish 3? Message-ID: Hi there, I'm wondering how I can monitor the actual usage of the cache "space". Previous versions of the Nagios plugin had a "usage" parameter, that would spit out a fill level as a percentage. Seems seems to have gone away. I tried to roll my own by simply dividing SMF.s0.c_bytes (Bytes allocated) by SMF.s0.g_space (Bytes available) However, I misunderstood the semantics, the latter value does give me the amount of free space, not the total size of the cache file. I could get the configured size from the config file VARNISH_STORAGE_SIZE=512676693.9k or the commandline that is constructed from it -s file,/var/cache/varnish/store.bin,512676693.9k but that feels a bit hacky to me. Any way to get that information from the running instance? Thanks in advance for any pointers Sascha From trompetter at titandsl.de Mon Nov 19 21:42:12 2012 From: trompetter at titandsl.de (Reinhard Trompetter) Date: Mon, 19 Nov 2012 22:42:12 +0100 Subject: No subject Message-ID: <50AAA7B4.5000901@titandsl.de> Hi Per, thank you very much for your quick reply, but I still cannot connect to my to servers from the Internet. My public IP is 217.140.77.176 und the corresponding domain "www.medmoodle.de". My configuration file "/etc/varnish/default.vcl" looks like: backend moodle { .host = "192.168.1.57"; #IP of moodle backend .port = "80"; } backend drupal { .host = "192.168.1.60"; #IP of drupal backend .port = "80"; } sub vcl_recv { if (req.url~"^/moodle"){ set req.backend = moodle; }else if(req.url~"^/drupal"){ set req.backend = drupal; } Any ideas? Regards Reinhard -------------- next part -------------- An HTML attachment was scrubbed... URL: From me at ibotty.net Mon Nov 19 21:52:04 2012 From: me at ibotty.net (me at ibotty.net) Date: Mon, 19 Nov 2012 22:52:04 +0100 Subject: cannot connect to varnish In-Reply-To: <50AAA7B4.5000901@titandsl.de> References: <50AAA7B4.5000901@titandsl.de> Message-ID: <50AAAA04.5090507@ibotty.net> hi reinhard, > My public IP is 217.140.77.176 und the corresponding domain > "www.medmoodle.de". i cannot connect to your ip with telnet. check that you are not firewalled and you have started varnish listening on the right ip (if at all). try to connect from localhost and from the internal hosts to narrow down the problem. good luck, tobias florek From shib4u at gmail.com Tue Nov 20 05:52:18 2012 From: shib4u at gmail.com (Shibashish) Date: Tue, 20 Nov 2012 11:22:18 +0530 Subject: No subject In-Reply-To: <50AAA7B4.5000901@titandsl.de> References: <50AAA7B4.5000901@titandsl.de> Message-ID: On Tue, Nov 20, 2012 at 3:12 AM, Reinhard Trompetter wrote: > Hi Per, > > thank you very much for your quick reply, but I still cannot connect to my > to servers from the Internet. > > My public IP is 217.140.77.176 und the corresponding domain " > www.medmoodle.de". > > My configuration file "/etc/varnish/default.vcl" looks like: > > backend moodle { > .host = "192.168.1.57"; #IP of moodle backend > .port = "80"; > } > backend drupal { > .host = "192.168.1.60"; #IP of drupal backend > .port = "80"; > } > sub vcl_recv { > if (req.url~"^/moodle"){ > set req.backend = moodle; > }else if(req.url~"^/drupal"){ > set req.backend = drupal; > } > > Any ideas? > > Regards > > Reinhard > > > > _______________________________________________ > varnish-misc mailing list > varnish-misc at varnish-cache.org > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc > Hope both your backends are responding. Next, it seems a firewall block or connectivity problems may be the issue, please check. I can ping your public ip but port 80 is not responding. How is the public ip connected to backend Varnish? -- Shib -------------- next part -------------- An HTML attachment was scrubbed... URL: From sachingcs at gmail.com Tue Nov 20 08:05:55 2012 From: sachingcs at gmail.com (Sachin Gupta) Date: Tue, 20 Nov 2012 13:35:55 +0530 Subject: Fwd: Checking wordpress in varnish ...Does not load after disable mysql or php. In-Reply-To: References: Message-ID: ---------- Forwarded message ---------- From: Sachin Gupta Date: Tue, Nov 20, 2012 at 1:33 PM Subject: Checking wordpress in varnish ...Does not load after disable mysql or php. To: mailman at varnish-cache.org Hi, I want to simple follow these steps.but this is not working for me..Can you suggest to me .where i am doing wrong. 1. Set the TTL to 120 seconds (the default value in most setups I have seen), in Varnish. 2. Visit your site's home page as a non-logged-in user. 3. Turn off MySQL and/or PHP. 4. Try to login to the WP backend (to make sure PHP or MySQL is really turned off). You wouldn't be able to login now. 5. Visit your site's home page as a non-logged-in user. 6. If the home page shows up, Varnish is working. Instead of home page, you may use any other page or post. You may want to purge its cache before doing this tiny test that may fail, if the TTL expires just before step #5. -- Sachin Gupta Linux System Administrator Phone Number : 9198236204 *Visit URL : * Blog URL : http://linuxmania.info/ Blog URL : http://sachinlinux.blogspot.com/ Facebook URL : https://www.facebook.com/sachinlinux LinkedIn :http://www.linkedin.com/pub/sachin-gupta/23/982/874 -- Sachin Gupta Linux System Administrator Phone Number : 9198236204 *Visit URL : * Blog URL : http://linuxmania.info/ Blog URL : http://sachinlinux.blogspot.com/ Facebook URL : https://www.facebook.com/sachinlinux LinkedIn :http://www.linkedin.com/pub/sachin-gupta/23/982/874 -------------- next part -------------- An HTML attachment was scrubbed... URL: From trompetter at titandsl.de Tue Nov 20 22:03:33 2012 From: trompetter at titandsl.de (Reinhard Trompetter) Date: Tue, 20 Nov 2012 23:03:33 +0100 Subject: No subject Message-ID: <50ABFE35.3080501@titandsl.de> Hi, I cannot solve my problem, therefore again I write this post: My public IP is 217.140.77.176 und the corresponding domain "www.medmoodle.de". The varnish cache server hat the IP 192.168.1.59 and is reached over NAT and port 80 from my router with the public IP above. My configuration file "/etc/varnish/default.vcl" looks like: backend moodle { .host = "192.168.1.57"; #IP of moodle backend .port = "80"; } backend drupal { .host = "192.168.1.60"; #IP of drupal backend .port = "80"; } sub vcl_recv { if (req.url~"^/moodle"){ set req.backend = moodle; }else if(req.url~"^/drupal"){ set req.backend = drupal; } Best Regards, Reinhard -------------- next part -------------- An HTML attachment was scrubbed... URL: From bjorn at ruberg.no Tue Nov 20 22:12:30 2012 From: bjorn at ruberg.no (=?ISO-8859-1?Q?Bj=F8rn_Ruberg?=) Date: Tue, 20 Nov 2012 23:12:30 +0100 Subject: No subject In-Reply-To: <50ABFE35.3080501@titandsl.de> References: <50ABFE35.3080501@titandsl.de> Message-ID: <50AC004E.7080705@ruberg.no> On 11/20/2012 11:03 PM, Reinhard Trompetter wrote: > Hi, > > I cannot solve my problem, therefore again I write this post: Please use a descriptive subject when posting to the list. > My public IP is 217.140.77.176 und the corresponding domain > "www.medmoodle.de". > > The varnish cache server hat the IP 192.168.1.59 and is reached over > NAT and port 80 from my router with the public IP above. $ telnet 217.140.77.176 80 Trying 217.140.77.176... telnet: Unable to connect to remote host: Connection refused Also: http://www.downforeveryoneorjustme.com/217.140.77.176 There seems to be an error with your router's configuration, and/or the server on the inside does not respond to connection requests on port 80. It's quite probably not a Varnish issue. -- Bj?rn -------------- next part -------------- An HTML attachment was scrubbed... URL: From nick.tailor at gmail.com Tue Nov 20 22:21:33 2012 From: nick.tailor at gmail.com (nick tailor) Date: Tue, 20 Nov 2012 14:21:33 -0800 Subject: No subject In-Reply-To: <50AC004E.7080705@ruberg.no> References: <50ABFE35.3080501@titandsl.de> <50AC004E.7080705@ruberg.no> Message-ID: Yes, this would most likely not be varnish issue. Are you able to telnet to port 80 from the varnish to server to your webservers on the internal or NAT ip? If not, you should check your router firewall to ensure your allowing traffic to the internal ip on port 80 to your webservers, retest the telnet from varnish server to your webserver until you can get a connection. :) Cheers Nick Tailor On Tue, Nov 20, 2012 at 2:12 PM, Bj?rn Ruberg wrote: > On 11/20/2012 11:03 PM, Reinhard Trompetter wrote: > > Hi, > > I cannot solve my problem, therefore again I write this post: > > > Please use a descriptive subject when posting to the list. > > > My public IP is 217.140.77.176 und the corresponding domain " > www.medmoodle.de". > > The varnish cache server hat the IP 192.168.1.59 and is reached over NAT > and port 80 from my router with the public IP above. > > > $ telnet 217.140.77.176 80 > Trying 217.140.77.176... > telnet: Unable to connect to remote host: Connection refused > > Also: > > http://www.downforeveryoneorjustme.com/217.140.77.176 > > There seems to be an error with your router's configuration, and/or the > server on the inside does not respond to connection requests on port 80. > It's quite probably not a Varnish issue. > > -- > Bj?rn > > > _______________________________________________ > varnish-misc mailing list > varnish-misc at varnish-cache.org > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc > -------------- next part -------------- An HTML attachment was scrubbed... URL: From hugo.cisneiros at gmail.com Fri Nov 23 00:29:23 2012 From: hugo.cisneiros at gmail.com (Hugo Cisneiros (Eitch)) Date: Thu, 22 Nov 2012 22:29:23 -0200 Subject: Loading and using already compiled VCL? Message-ID: Hi, I was talking with someone about Varnish and he raised an issue that got me curious: is there any way to use a VCL object compiled in another machine? Someone will question me: why do this crazy thing? :) Many companies (mainly hosting ones) have this security policy on prohibiting any gcc installed in any front-end server. That means Varnish can't be installed. Some could say that this is a bad policy, but it's the policy. For the security people, it's another security layer (so it's good). The solution could be to compile the VCL on another machine and load on the servers, like a "package". Or is there any other good solution? :) Thanks, -- []'s Hugo www.devin.com.br -------------- next part -------------- An HTML attachment was scrubbed... URL: From Jonathan.Huot at thomsonreuters.com Fri Nov 23 09:57:20 2012 From: Jonathan.Huot at thomsonreuters.com (Jonathan.Huot at thomsonreuters.com) Date: Fri, 23 Nov 2012 09:57:20 +0000 Subject: High delay between accept'd and processing Message-ID: <8E656B642592B942AE317E2AFAE0ABA107E28B8C@UK2P-ERFMMBX14.ERF.thomson.com> Hi all, We're doing some tests with Varnish, and I'm trying to understand some timings. With a very low traffic (<5 req/sec), I got sometime a delay of several *seconds* in the fourth number of ReqEnd [1]. For example, if I parse timings for only one RxURL and filter values by HIT : minimal value : 0.000062704 s maximal value : 5.040635347 s average : 1.50531 s number of requests : 300 Someone has clues to help me to understand what's going on? Maybe some specific varnish or linux stats to check ? [1] : https://www.varnish-cache.org/trac/wiki/Varnishlog#ReqEnd -- Jonathan Huot Thomson Reuters This email was sent to you by Thomson Reuters, the global news and information company. Any views expressed in this message are those of the individual sender, except where the sender specifically states them to be the views of Thomson Reuters. From cosimo at streppone.it Fri Nov 23 10:32:19 2012 From: cosimo at streppone.it (Cosimo Streppone) Date: Fri, 23 Nov 2012 11:32:19 +0100 Subject: High delay between accept'd and processing In-Reply-To: <8E656B642592B942AE317E2AFAE0ABA107E28B8C@UK2P-ERFMMBX14.ERF.thomson.com> References: <8E656B642592B942AE317E2AFAE0ABA107E28B8C@UK2P-ERFMMBX14.ERF.thomson.com> Message-ID: On Fri, 23 Nov 2012 10:57:20 +0100, wrote: > We're doing some tests with Varnish, and I'm trying to understand some > timings. Just thinking out loud... Please correct me where I'm wrong. If: 1) you are sending a request that hashes to the same object && 2) your backend is taking a long time to answer && 3) the object is not in cache when the first request hits then it could be that varnish is "herding", waiting for the backend to respond before satisfying all the requests at once. You should see "Herd(?:ing)" in the varnishlog output. However: > With a very low traffic (<5 req/sec), I got sometime a delay > of several *seconds* in the fourth number of ReqEnd [1]. The 4th number is time from the session start, so if your client is using KeepAlive, it could well be that it connects at t0 and sends n requests where the nth request starts at t0 + 5s. Or could be a mix of keepalive + herding? -- Cosimo From lampe at hauke-lampe.de Sat Nov 24 05:22:43 2012 From: lampe at hauke-lampe.de (Hauke Lampe) Date: Sat, 24 Nov 2012 06:22:43 +0100 Subject: Loading and using already compiled VCL? In-Reply-To: References: Message-ID: <50B059A3.6090702@hauke-lampe.de> On 23.11.2012 01:29, Hugo Cisneiros (Eitch) wrote: > I was talking with someone about Varnish and he raised an issue that got me > curious: is there any way to use a VCL object compiled in another machine? Sure there is. Replace cc_command with a suitable command to fetch/link your precompiled VCL. E.g.: -p cc_command="ln -s /usr/lib/varnish/vcl-precompiled.so %o" You'll still need a valid local VCL file to satisfy the VCL compiler. Keep in mind that not compiling VCL on the local machine against the currently installed varnish can lead to problems that may be hard to debug. Also, the local VCL file will not reflect the running config any more. Make sure to put a large "Don't waste your time here" banner at the top. > The solution could be to compile the VCL on another machine and load on the > servers, like a "package". Exactly. Keep a private repository with your own varnish packages and pre-compiled VCLs. With the right dependencies, you can ensure that your VCL and varnish are always built together on the same system. Hauke. From benimaur at gmail.com Sun Nov 25 15:13:54 2012 From: benimaur at gmail.com (Benimaur Gao) Date: Sun, 25 Nov 2012 23:13:54 +0800 Subject: Mis-config in my VCL Message-ID: Hi, I am trying to get myself acquaintance with ESI. I add the following snippet to my default.vcl, and cannot get varnishd started anymore.. 83 sub vcl_fetch { 84 if (req.url == "/esi.html") { 85 set beresp.do_esi = true; 86 set beresp.ttl = 24h; 87 } elseif (req.url == "/cgi-bin/date.cgi") { 88 set beresp.ttl = 1m; 89 } 90 if (!beresp.cacheable) { 91 return (pass); 92 } 93 if (beresp.http.Set-Cookie) { 94 return (pass); 95 } 96 return (deliver); 97 } and the error message is: # varnishd -f /etc/varnish/default.vcl -s malloc,10M -T 127.0.0.1:2000 storage_malloc: max size 10 MB. Message from VCC-compiler: Unknown variable 'beresp.do_esi' At: (input Line 85 Pos 12) set beresp.do_esi = true; -----------#############-------- Running VCC-compiler failed, exit 1 VCL compilation failed hope someone can help. -------------- next part -------------- An HTML attachment was scrubbed... URL: From kokoniimasu at gmail.com Sun Nov 25 15:25:26 2012 From: kokoniimasu at gmail.com (kokoniimasu) Date: Mon, 26 Nov 2012 00:25:26 +0900 Subject: Mis-config in my VCL In-Reply-To: References: Message-ID: Hi, Benimaur. What is your Varnish version? beresp.do_esi is 3.0 later. ref https://www.varnish-cache.org/docs/3.0/installation/upgrade.html Regards, -- Syohei Tanaka(@xcir) http://xcir.net/ (:3[__]) 2012/11/26 Benimaur Gao : > Hi, > I am trying to get myself acquaintance with ESI. > I add the following snippet to my default.vcl, and cannot get varnishd > started anymore.. > > 83 sub vcl_fetch { > 84 if (req.url == "/esi.html") { > 85 set beresp.do_esi = true; > 86 set beresp.ttl = 24h; > 87 } elseif (req.url == "/cgi-bin/date.cgi") { > 88 set beresp.ttl = 1m; > 89 } > 90 if (!beresp.cacheable) { > 91 return (pass); > 92 } > 93 if (beresp.http.Set-Cookie) { > 94 return (pass); > 95 } > 96 return (deliver); > 97 } > > and the error message is: > > # varnishd -f /etc/varnish/default.vcl -s malloc,10M -T 127.0.0.1:2000 > storage_malloc: max size 10 MB. > Message from VCC-compiler: > Unknown variable 'beresp.do_esi' > At: (input Line 85 Pos 12) > set beresp.do_esi = true; > -----------#############-------- > Running VCC-compiler failed, exit 1 > VCL compilation failed > > hope someone can help. > > > _______________________________________________ > varnish-misc mailing list > varnish-misc at varnish-cache.org > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc From benimaur at gmail.com Sun Nov 25 15:34:13 2012 From: benimaur at gmail.com (Benimaur Gao) Date: Sun, 25 Nov 2012 23:34:13 +0800 Subject: Mis-config in my VCL In-Reply-To: References: Message-ID: Thank you for pointing out that for me! # varnishd -V varnishd (varnish-2.1.3 SVN ) Copyright (c) 2006-2009 Linpro AS / Verdens Gang AS I will upgrade my varnish soon :) On Sun, Nov 25, 2012 at 11:25 PM, kokoniimasu wrote: > Hi, Benimaur. > > What is your Varnish version? > beresp.do_esi is 3.0 later. > > ref > https://www.varnish-cache.org/docs/3.0/installation/upgrade.html > > Regards, > -- > Syohei Tanaka(@xcir) > http://xcir.net/ > (:3[__]) > > 2012/11/26 Benimaur Gao : > > Hi, > > I am trying to get myself acquaintance with ESI. > > I add the following snippet to my default.vcl, and cannot get varnishd > > started anymore.. > > > > 83 sub vcl_fetch { > > 84 if (req.url == "/esi.html") { > > 85 set beresp.do_esi = true; > > 86 set beresp.ttl = 24h; > > 87 } elseif (req.url == "/cgi-bin/date.cgi") { > > 88 set beresp.ttl = 1m; > > 89 } > > 90 if (!beresp.cacheable) { > > 91 return (pass); > > 92 } > > 93 if (beresp.http.Set-Cookie) { > > 94 return (pass); > > 95 } > > 96 return (deliver); > > 97 } > > > > and the error message is: > > > > # varnishd -f /etc/varnish/default.vcl -s malloc,10M -T 127.0.0.1:2000 > > storage_malloc: max size 10 MB. > > Message from VCC-compiler: > > Unknown variable 'beresp.do_esi' > > At: (input Line 85 Pos 12) > > set beresp.do_esi = true; > > -----------#############-------- > > Running VCC-compiler failed, exit 1 > > VCL compilation failed > > > > hope someone can help. > > > > > > _______________________________________________ > > varnish-misc mailing list > > varnish-misc at varnish-cache.org > > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc > -------------- next part -------------- An HTML attachment was scrubbed... URL: From klaus.brunner at gmail.com Fri Nov 30 13:07:36 2012 From: klaus.brunner at gmail.com (Klaus Brunner) Date: Fri, 30 Nov 2012 14:07:36 +0100 Subject: logging request time Message-ID: Hi, I've had the same issue, and I've hacked a few lines to add a "%D" flag (similar to Apache's) to varnishncsa in 3.0.3. See: https://gist.github.com/4175582 It seems to work, but please note that my C skills are fairly rusty and this has not been tested thoroughly yet, so I'm not quite ready to submit it to the -dev list. But you're welcome to give it a try and report any problems. Klaus From trioux at tango.me Tue Nov 27 23:05:48 2012 From: trioux at tango.me (Tom Rioux) Date: Tue, 27 Nov 2012 15:05:48 -0800 Subject: varnishd question Message-ID: <50B5474C.8070601@tango.me> Hi, Is it possible to run varnishd not as root (Ubuntu)? This is for our automation test environments, not live production. I'm getting this message when I try to run under my id: Failed to create ./vcl.uOZIGcgD.c: Permission denied VCL compilation failed I've tried changing permissions on varnishd. Thanks, Tom