Fabian,<div>if you could put together a test case that I can run to reproduce the problem I will take a look into it.</div><div><br></div><div>Regards,</div><div>Umberto<br><br><div class="gmail_quote">On Thu, Jun 28, 2012 at 1:44 PM, thomas bonfort <span dir="ltr"><<a href="mailto:thomas.bonfort@gmail.com" target="_blank">thomas.bonfort@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Fabian,<br>
can you get a backtrace of the segfaults?<br>
<br>
Aside from that, I would personally refrain from using threads with<br>
mapscript and stick to a prefork mpm in apache to accomplish this. It<br>
is also my understanding that calling msCleanup() should be limited to<br>
when a process is actually exiting, and not at the end of each<br>
request, i.e. if I were you I would investigate where memory is<br>
leaking when freeing your request/map objects.<br>
<br>
regards,<br>
thomas<br>
<div class="HOEnZb"><div class="h5"><br>
On Thu, Jun 28, 2012 at 11:28 AM, Fabian Schindler<br>
<<a href="mailto:fabian.schindler@eox.at">fabian.schindler@eox.at</a>> wrote:<br>
> Hi all,<br>
><br>
> Has anyone had issues with Python MapScript and the msCleanup() in<br>
> WSGI-Apache applications? Using msCleanup() results in strange<br>
> errors/segfaults in multi-threaded setups but not using it quickly eats up<br>
> memory.<br>
><br>
> We are developing a Django application to serve enhanced WCS responses<br>
> (according to the EO-WCS extension). For this purpose, we use MapScript to<br>
> receive a basic WCS response, which we are extending with additional<br>
> metadata.<br>
><br>
> Our mapserver dispatch code is like this:<br>
><br>
> mapscript.msIO_installStdoutToBuffer()<br>
> dispatch_status = map.OWSDispatch(ows_req)<br>
> content_type = mapscript.msIO_stripStdoutBufferContentType()<br>
> mapscript.msIO_stripStdoutBufferContentHeaders()<br>
> result = mapscript.msIO_getStdoutBufferBytes()<br>
> mapscript.msCleanup(1)<br>
> return result, content_type, dispatch_status<br>
><br>
> Unfortunately we experienced several weird errors (segfaults, hit assertions<br>
> within GEOS, etc) when dispatching requests, especially in multi-threaded<br>
> environments (such as a deployment with Apache). We traced this down and<br>
> found that a call to `msCleanup` right after the OWSDispatch was causing the<br>
> problems.<br>
><br>
> Taken from the mapscript documentation:<br>
><br>
> "msCleanup() attempts to recover all dynamically allocated resources<br>
> allocated by MapServer code and dependent libraries. It it used primarily<br>
> for final cleanup in scripts that need to do memory leak testing to get rid<br>
> of “noise” one-time allocations. It should not normally be used by<br>
> production code."<br>
><br>
> When we remove the call to msCleanup, no segfaults and other errors occur<br>
> within Apache. Unfortunately, while running our test cases (including<br>
> several hundreds MapServer dispatches) we quickly run out of memory (e.g:<br>
> memory consumption after 30 test cases was over 2.2 GiB instead of about 150<br>
> MB).<br>
><br>
> Any ideas are welcome :)<br>
><br>
> Thanks,<br>
> Fabian<br>
><br>
> _______________________________________________<br>
> mapserver-dev mailing list<br>
> <a href="mailto:mapserver-dev@lists.osgeo.org">mapserver-dev@lists.osgeo.org</a><br>
> <a href="http://lists.osgeo.org/mailman/listinfo/mapserver-dev" target="_blank">http://lists.osgeo.org/mailman/listinfo/mapserver-dev</a><br>
_______________________________________________<br>
mapserver-dev mailing list<br>
<a href="mailto:mapserver-dev@lists.osgeo.org">mapserver-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/mapserver-dev" target="_blank">http://lists.osgeo.org/mailman/listinfo/mapserver-dev</a><br>
</div></div></blockquote></div><br></div>