> On 30 Sep 2016, at 10:27 AM, Graham Dumpleton <[email protected]> 
> wrote:
> 
> The very minimal Apache configuration they supply is somehow resulting in 
> Apache not being initialised properly in some way that mod_wsgi expects. Or 
> more likely the changes I made have simply changed the memory layout enough 
> that it works.
> 
> If I use:
> 
> Listen 8080
> LogLevel warn
> WSGIDaemonProcess example.com <http://example.com/> processes=2 threads=2
> <VirtualHost *:8080>
>   ServerName localhost
>   WSGIScriptAlias /test /wsgi/wsgi-test.wsgi
>  WSGIProcessGroup example.com <http://example.com/>
>   <Directory /wsgi>
>   Require all granted
>   </Directory>
> </VirtualHost>
> 
> then it works fine.
> 
> The two changes were, set LogLevel directive to have a value rather than rely 
> on compiled in default.
> 
> Move the WSGIDaemonProcess directive outside of the VirtualHost.
> 
> As long as do both, it isn’t crashing.
> 
> I have suspected that there is a memory usage issue in mod_wsgi for a very 
> long time and have never been able to find it.
> 
> I have seen two different issues and both only occur with Apache from MacOS X 
> on Yosemite.
> 
> The first is that if use -DFOREGROUND and -DONE_PROCESS it would crash on 
> startup.
> 
> The second is that sometimes on shutdown with mod_wsgi-express, the Python 
> interpreter will crash as it being destroyed within the process.
> 
> Whenever I have attempted to stick a debugger on it to try and track down, 
> the issue never occurs.
> 
> BTW, with the mod_wsgi-express way of triggering it, can you instead run:
> 
>     mod_wsgi-express start-server /wsgi/wsgi-test.wsgi —user apache —group 
> apache —enable-gdb
> 
> This will launch httpd under gdb from the outset, in the -DFOREGROUND and 
> -DONE_PROCESS mode. I want to see if in doing that it still crashes.

Seems using —enable-gdb will not work as it doesn’t like something in my 
command file for gdb.

/ # mod_wsgi-express start-server /wsgi/wsgi-test.wsgi --user apache --group 
apache --enable-gdb
Server URL         : http://localhost:8000/
Server Root        : /tmp/mod_wsgi-localhost:8000:0
Server Conf        : /tmp/mod_wsgi-localhost:8000:0/httpd.conf
Error Log File     : /tmp/mod_wsgi-localhost:8000:0/error_log (warn)
Request Capacity   : 5 (1 process * 5 threads)
Request Timeout    : 60 (seconds)
Startup Timeout    : 15 (seconds)
Queue Backlog      : 100 (connections)
Queue Timeout      : 45 (seconds)
Server Capacity    : 20 (event/worker), 20 (prefork)
Server Backlog     : 500 (connections)
Locale Setting     : en_US.UTF-8
GNU gdb (GDB) 7.11
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-alpine-linux-musl".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from 
/usr/local/lib/python2.7/site-packages/mod_wsgi_packages/httpd/bin/httpd...done.
warning: Error disabling address space randomization: Operation not permitted
/tmp/mod_wsgi-localhost:8000:0/gdb.cmds:1: Error in sourced command file:
During startup program exited with code 1.

Graham

> Graham
> 
>> On 30 Sep 2016, at 1:57 AM, Konstantin Suvorov <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> I've tried mod_wsgi-express on a clean python:2.7-apline image.
>> Just made:
>> apk --no-cache add build-base bash
>> pip install mod_wsgi-httpd
>> pip install mod_wsgi
>> addgroup -S apache
>> adduser -S -G apache apache
>> mod_wsgi-express start-server /wsgi/wsgi-test.wsgi --user apache --group 
>> apache
>> Gives segfault with hello world application.
>> 
>> Some GDB stuff:
>> (gdb) r
>> Starting program: /bin/bash -c mod_wsgi-express\ start-server\ 
>> /wsgi/wsgi-test.wsgi\ --user\ apache\ --group\ apache
>> process 1667 is executing new program: /usr/local/bin/python2.7
>> Server URL         : http://localhost:8000/ <http://localhost:8000/>
>> Server Root        : /tmp/mod_wsgi-localhost:8000:0
>> Server Conf        : /tmp/mod_wsgi-localhost:8000:0/httpd.conf
>> Error Log File     : /tmp/mod_wsgi-localhost:8000:0/error_log (warn)
>> Request Capacity   : 5 (1 process * 5 threads)
>> Request Timeout    : 60 (seconds)
>> Startup Timeout    : 15 (seconds)
>> Queue Backlog      : 100 (connections)
>> Queue Timeout      : 45 (seconds)
>> Server Capacity    : 20 (event/worker), 20 (prefork)
>> Server Backlog     : 500 (connections)
>> Locale Setting     : en_US.UTF-8
>> process 1667 is executing new program: /bin/busybox
>> process 1667 is executing new program: /bin/bash
>> process 1667 is executing new program: 
>> /usr/local/lib/python2.7/site-packages/mod_wsgi_packages/httpd/bin/httpd
>> 
>> Program received signal SIGSEGV, Segmentation fault.
>> wsgi_add_daemon_process (cmd=0x7fffffffe800, mconfig=<optimized out>, 
>> args=0x55555583eefd "") at src/server/mod_wsgi.c:7569
>> 7569 src/server/mod_wsgi.c: No such file or directory.
>> (gdb) bt
>> #0  wsgi_add_daemon_process (cmd=0x7fffffffe800, mconfig=<optimized out>, 
>> args=0x55555583eefd "") at src/server/mod_wsgi.c:7569
>> #1  0x00005555555a2776 in invoke_cmd (cmd=0x7ffff567d8d0 <wsgi_commands+80>, 
>> parms=parms@entry=0x7fffffffe800, mconfig=0x555555839e38,
>>     args=0x55555583ecc8 "localhost:8000    
>> display-name='(wsgi:localhost:8000:0)'    home='/'    threads=5    
>> maximum-requests=0    python-path=''    
>> python-eggs='/tmp/mod_wsgi-localhost:8000:0/python-eggs'    
>> lang='en_US.UTF"...) at config.c:879
>> #2  0x00005555555a4f1d in ap_walk_config_sub (section_vector=0x55555581e508, 
>> parms=0x7fffffffe800, current=0x55555583aa88) at config.c:1309
>> #3  ap_walk_config (current=0x55555583aa88, 
>> parms=parms@entry=0x7fffffffe800, section_vector=0x55555581e508) at 
>> config.c:1342
>> #4  0x00005555555a622d in ap_process_config_tree (s=<optimized out>, 
>> conftree=<optimized out>, p=0x5555557ec0a8, ptemp=<optimized out>)
>>     at config.c:2059
>> #5  0x0000555555582d5d in main (argc=10, argv=0x7fffffffe9b8) at main.c:739
>> 
>> This leads me to this 
>> <https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/src/server/mod_wsgi.c#L7569>:
>>         if (!strcmp(entry->name, name))
>>             return "Name duplicates previous WSGI daemon definition.";
>> 
>> gdb output from packaged apache and mod_wsgi suggest the same place:
>> Program received signal SIGSEGV, Segmentation fault.
>> 0x00007ffff7dc1abd in strcmp () from /lib/ld-musl-x86_64.so.1
>> 
>> Any ideas?
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "modwsgi" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] 
>> <mailto:[email protected]>.
>> To post to this group, send email to [email protected] 
>> <mailto:[email protected]>.
>> Visit this group at https://groups.google.com/group/modwsgi 
>> <https://groups.google.com/group/modwsgi>.
>> For more options, visit https://groups.google.com/d/optout 
>> <https://groups.google.com/d/optout>.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.

Reply via email to