Hi, Just to add to below, I've replicated this on the latest trunk. I've also confirmed that the flag that the -enable-debugging-symbols doesn't matter - it's the -enable-diagnostics that makes the difference between a working installation and segfaulting installation.
I can see that this appends a CFLAG -DDIAGNOSTICS to the build - but can't for the life of me see what this actually does to the operation of the service. If anyone can shed some light on where exactly this flag is used (I've done a lot of grepping to not much avail) I'd be keen to investigate it. From: [email protected] [mailto:[email protected]] On Behalf Of Joshua Small Sent: Thursday, 3 January 2013 1:19 PM To: [email protected] Subject: Varnish on a pi Hi, I've trying to install Varnish on a Raspberry pi. This has been discussed on their own forums with a general view of "it simply doesn't work", so I set about finding why. Some info: pi@raspberrypi ~ $ uname -a Linux raspberrypi 3.2.27+ #4 PREEMPT Fri Dec 28 16:14:38 EST 2012 armv6l GNU/Linux pi@raspberrypi ~ $ free total used free shared buffers cached Mem: 497132 284352 212780 0 63616 180780 -/+ buffers/cache: 39956 457176 Swap: 102396 0 102396 Image is the Debian port "raspbian", updated from repositories as of today. I initially assumed the repositories were the issue and obtained varnish-3.0.3 from source. The install is fairly default, documented here: sudo apt-get install automake libtool sh autogen.sh sh configure make sudo make install sudo vi /usr/local/etc/varnish/default.vcl Setup backend servers.. sudo ldconfig -n /usr/local/lib/ Varnish however, appears to crash and burn: pi@raspberrypi ~ $ sudo /usr/local/sbin/varnishd -f /usr/local/etc/varnish/default.vcl -s malloc,16M -a 172.31.1.50:80 -d Platform: Linux,3.2.27+,armv6l,-sfile,-smalloc,-hcritbit 200 233 ----------------------------- Varnish Cache CLI 1.0 ----------------------------- Linux,3.2.27+,armv6l,-sfile,-smalloc,-hcritbit Type 'help' for command list. Type 'quit' to close CLI session. Type 'start' to launch worker process. start child (19755) Started Pushing vcls failed: CLI communication error (hdr) Stopping Child 200 0 Child (19755) died signal=11 Child cleanup complete quit 500 22 Closing CLI connection In order to follow the recommended process here https://www.varnish-cache.org/trac/wiki/DebuggingVarnish, I reconfigured with --enable-debugging-symbols --enable-diagnostics. I went back and forth between a "default" install and "diagnostic" install three different times to confirm this, because I appreciate it doesn't seem plausible. Regrettably, the situation experienced is that I have a fix: Compile in diagnostic mode. With the above configure options (I ran make clean between each new build) the Varnish service appeared to operate fine. Whilst I could just leave diagnostics on, I'm assuming there's load associated with this. I've pasted below an strace of the crashed system, but I'm just not sure how else I can debug in this situation. Is there anything else that the diagnostics mode does that could possibly get involved here? [pid 18164] clock_gettime(CLOCK_REALTIME, <unfinished ...> [pid 18166] <... nanosleep resumed> NULL) = 0 [pid 18166] mmap2(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x45e00000 [pid 18166] mprotect(0x45e00000, 4096, PROT_NONE) = 0 [pid 18166] clone(Process 18173 attached (waiting for parent) Process 18173 resumed (parent 18166 ready) child_stack=0x45e0efa8, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x45e0f4d8, tls=0x45e0f930, child_tidptr=0x45e0f4d8) = 18173 [pid 18173] set_robust_list(0x45e0f4e0, 0xc) = 0 [pid 18173] clock_gettime(CLOCK_REALTIME, {1357176395, 646464764}) = 0 [pid 18173] futex(0x45e0ebd4, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...> [pid 18166] nanosleep({0, 2000000}, <unfinished ...> [pid 18164] <... clock_gettime resumed> {1357176395, 642222934}) = 0 [pid 18164] --- SIGSEGV (Segmentation fault) @ 0 (0) --- Process 18164 detached [pid 18173] +++ killed by SIGSEGV +++ Below you can see the syslog that covers me starting varnish twice, once with a default configure, once with the diagnostics enabled. Jan 3 12:54:27 raspberrypi varnishd[26807]: Platform: Linux,3.2.27+,armv6l,-smalloc,-smalloc,-hcritbit Jan 3 12:54:27 raspberrypi varnishd[26807]: child (26808) Started Jan 3 12:54:27 raspberrypi varnishd[26807]: Child (26808) died signal=11 Jan 3 12:54:27 raspberrypi varnishd[26807]: Child (-1) said Child starts Jan 3 13:05:04 raspberrypi varnishd[31536]: Platform: Linux,3.2.27+,armv6l,-smalloc,-smalloc,-hcritbit Jan 3 13:05:04 raspberrypi varnishd[31536]: child (31537) Started Jan 3 13:05:04 raspberrypi varnishd[31536]: Child (31537) said Child starts Finally, some info from the config log. pi@raspberrypi ~/varnish-3.0.3 $ grep -i warn config.log cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default] configure:13219: WARNING: xsltproc not found - not building documentation configure:13279: WARNING: rst2man not found - not building man pages configure:13342: WARNING: rst2html not found - not building changelog conftest.c:40:6: warning: conflicting types for built-in function 'cos' [enabled by default] configure:14290: WARNING: libedit not found, disabling libedit support conftest.c:72:6: warning: conflicting types for built-in function 'vprintf' [enabled by default] configure:15220: WARNING: won't look for sendfile() on armv6l-unknown-linux-gnueabihf conftest.c:68:3: warning: left shift count >= width of type [enabled by default] conftest.c:68:3: warning: left shift count >= width of type [enabled by default] conftest.c:69:10: warning: left shift count >= width of type [enabled by default] conftest.c:69:10: warning: left shift count >= width of type [enabled by default] Sorry for the long post - but hopefully it gives us something to go on. Any information would be appreciated. -Josh.
_______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
