Thanks again Gustaf, That looks great.

Just as an aside on this particular use case, the reason we're building
with --enable-symbols is debhelper has a dh_strip helper which will strip
the symbols out and makes a separate debug package.

So I'd want the symbols, but not for the asserts to be enabled.

I'll try your suggestions - thanks again.


On 16 February 2017 at 02:26, Gustaf Neumann <neum...@wu.ac.at> wrote:

> Am 15.02.17 um 16:22 schrieb David Osborne:
>
> We spotted that, if the following conditions are met, then a malformed
> HTTP request will make a Naviserver assert fail (4.99.15).
>
>    - Naviserver is compiled with --enable-symbols
>    - At least 1 writerthread is running
>    - A malformed HTTP request is made to a fastpath file which is bigger
>    than writersize
>
> I have 2 questions.
>
> 1. Is there a way of compiling Naviserver with debug symbols included,
> but with NDEBUG flag set as to not abort when an assert fails?
>
> The management of the NDEBUG flag is "inherited" via the TEA build rules
> of Tcl (m4/tcl.m4). When built with "--enable-symbols", the flag is not
> added, meaning that assert() calls will be evaluated. The assumption from
> Tcl is that versions built with "--enable-symbols" are for developers, who
> want as well asserts to be tested - but not for production sites. One can
> override these settings by either editing include/Makefile.global, or via
> providing the flag on the command line, like e.g.:
>
>     make "CFLAGS_DEFAULT=-Os -DNDEBUG"
>
> 2. Is the failing assert showing us something interesting?
>
> The request is actually not a "malformed request", but a request
> interpreted as a pre-HTTP/1.0 request (e.g. a request conforming to HTTP
> 0.9, where the HTTP-version was not specified in the request line, and
> where no reply header was returned; note that HTTP/1.0 was introduced in
> 1996, more than 20 years ago). NaviServer still tries to handle such
> requests, but there was a sanity check in the writer thread code, saying
> that when the writer thread has to send the reply header, it must not be
> zero, which does not hold for HTTP 0.9.
>
> The fix for this case is in bitbucket [1].
>
> All the best, and many thanks for the detailed report.
> -g
>
> [1] https://bitbucket.org/naviserver/naviserver/commits/
> 258264d620c1bb0164b5d6521d62b6cda064940a?at=default
>
> [13/Feb/2017:18:06:40][22169.7fb8a27fc700][-driver:nssock:0-] Notice:
> pre-HTTP/1.0 request <GET /index.html>
> nsd: driver.c:4872: NsWriterQueue: Assertion `wrSockPtr->headerString ==
> ((void *)0)' failed.
> Aborted
>
>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> naviserver-devel mailing list
> naviserver-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/naviserver-devel
>
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel

Reply via email to