<div dir="ltr"><div>I just discovered that declaring a logger without a name leads to a segfault. Backtrace:</div><div><br></div><div><div><div>Fri Apr 25 02:14:58 2014 - !!! uWSGI process 6490 got Segmentation Fault !!!</div>

<div>Fri Apr 25 02:14:58 2014 - *** backtrace of 6490 ***</div><div>uwsgi(uwsgi_backtrace+0x2e) [0x467b3e]</div><div>uwsgi(uwsgi_segfault+0x21) [0x467f01]</div><div>/lib/x86_64-linux-gnu/libc.so.6(+0x36ff0) [0x7fc4b5cbfff0]</div>

<div>/lib/x86_64-linux-gnu/libc.so.6(+0x1410a6) [0x7fc4b5dca0a6]</div><div>uwsgi(uwsgi_get_logger_from_id+0x38) [0x42e4a8]</div><div>uwsgi(uwsgi_setup_log_master+0xb9) [0x42e589]</div><div>uwsgi(uwsgi_setup+0xf78) [0x46b008]</div>

<div>uwsgi(main+0x9) [0x41e399]</div><div>/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7fc4b5caaec5]</div><div>uwsgi() [0x41e3c7]</div><div>*** end of backtrace ***</div></div></div><div><br></div><div><br>
</div>
<div>From <a href="http://uwsgi-docs.readthedocs.org/en/latest/Logging.html">http://uwsgi-docs.readthedocs.org/en/latest/Logging.html</a>, a line like "logger = file:/blabla" should be valid, but with PCRE enabled, it crashes uwsgi on start. It looks like strcmp is done on a null pointer on line 920 in core/logging.c.</div>

<div><br></div><div><br></div><div>Config used (emperor only, setting up a new system)</div><div><br></div><div><div><font face="courier new, monospace">[uwsgi]</font></div><div><font face="courier new, monospace">master = true</font></div>

<div><font face="courier new, monospace">die-on-term = true</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">emperor = /etc/uwsgi/sites/</font></div><div><font face="courier new, monospace"><br>

</font></div><div><font face="courier new, monospace">logger = <font color="#ff0000"><b>test </b></font>file:/var/log/uwsgi/uwsgi-all.log</font></div><div><font face="courier new, monospace">logger = nonok file:/var/log/uwsgi/uwsgi-error.log</font></div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"># Anything not 200 is sent to error log</font></div><div><font face="courier new, monospace">log-route = nonok (?!HTTP/1.\d 200)</font></div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">log-date = true</font></div><div><font face="courier new, monospace">log-format = %(addr) - %(user) [%(ltime)] "%(method) %(uri) %(proto)" %(status) %(size) "%(referer)" "%(uagent)"</font></div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">uid = www-data</font></div><div><font face="courier new, monospace">gid = www-data</font></div></div><div><br></div><div>
<br>
</div><div>To crash, remove the "test" logger name. Enviroment: fresh Ubuntu 14.04 vm, with pretty much only libpcre3-dev libssl-dev python-dev build-essential as extras.</div><div><br></div><div><br></div><div>

While I'm here, what's the best way to setup a system like Apache's access and error log? This is how we work currently:</div><div><br></div><div>Access: all the 200's and OK's.</div><div>Error: 404, 500, all output from Apache and its plugins like starting up, shutting down and most importantly, <b>sys.stderr.write() from wsgi-apps</b>. Is the last one printed to the "everything logger" in uwsgi and can be fished out with some regexes?</div>

<div><br></div><br clear="all"><div><div dir="ltr"><div style="font-family:arial"><div style="font-size:small">Kind regards,</div><div style="font-size:small"><br></div><div style="font-size:small">-- </div><div style="font-size:small">

Chi Ho Kwok<br></div><div style="font-size:small"><div>Digibites Technology<br></div><div><a href="mailto:chkwok@digibites.nl" style="color:rgb(17,85,204)" target="_blank">chkwok@digibites.nl</a></div></div></div></div></div>


</div>