You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-dev@quetz.apache.org by "Graham Dumpleton (JIRA)" <ji...@apache.org> on 2005/12/27 21:32:33 UTC

[jira] Commented: (MODPYTHON-102) Bus error with connection handler on secondary port.

    [ http://issues.apache.org/jira/browse/MODPYTHON-102?page=comments#action_12361291 ] 

Graham Dumpleton commented on MODPYTHON-102:
--------------------------------------------

See:

  http://www.mail-archive.com/python-dev@httpd.apache.org/msg00750.html

for possibly similar issue previously reported on FreeBSD.

Possible connection to this issue, raised in post:

  http://www.mail-archive.com/python-dev@httpd.apache.org/msg00933.html

> Bus error with connection handler on secondary port.
> ----------------------------------------------------
>
>          Key: MODPYTHON-102
>          URL: http://issues.apache.org/jira/browse/MODPYTHON-102
>      Project: mod_python
>         Type: Bug
>   Components: core
>     Versions: 3.2
>  Environment: Mas OS X 10.3 (Panther)
>     Reporter: Graham Dumpleton

>
> Logging this one for posterity as hardly likely that anyone would use connection handlers with mod_python for anything meaningful.
> Basic problem is that use of connection handler on secondary listener port is resulting in a bus error deep in Apache code when it tries to read data from the connection. The problem initially only seems to be present on Mac OS X 10.3. The problem could not be duplicated on Linux. On Mac OS X the problem occurred with both Apache 2.0.51 and 2.0.55 in both prefork and worker MPM modes.
> The connection handler code that was being used was:
>   from mod_python import apache
>   def connectionhandler(conn):
>     apache.log_error("connectionhandler")
>     try:
>       while 1:
>         #conn.write(conn.readline())
>         conn.write(conn.read())
>     except IOError:
>       pass
>     return apache.OK
> If this is enabled for the default listener port for Apache, ie., simply add in main Apache config:
>   PythonPath '["/Users/grahamd/Sites/add_handler"]+sys.path'
>   PythonConnectionHandler example::connectionhandler
> The connection handler works and is equivalent to mod_echo.
> If however the connection handler is run on a secondary port, a bus error occurs when read() or readline() is called by the connection handler. Ie.,
>   Listen 8081
>   PythonPath '["/Users/grahamd/Sites/add_handler"]+sys.path'
>   <VirtualHost *:8081>
>   PythonConnectionHandler example::connectionhandler
>   </VirtualHost>
> Output from gdb is below. Note that if the connection handler simply returns apache.DECLINED, everything is okay and Apache will serve up pages fine, only when doing read of data from connection handler does it decide to crash.
> (gdb) cont
> Continuing.
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> [Switching to process 2342 thread 0xc03]
> 0x00000058 in ?? ()
> (gdb) where
> #0  0x00000058 in ?? ()
> Cannot access memory at address 0x58
> Cannot access memory at address 0x58
> #1  0x006068f8 in _conn_read (c=0x1933014, mode=AP_MODE_READBYTES, len=0) at connobject.c:117
> #2  0x00606b04 in conn_read (self=0x471da0, args=0xf0101140) at connobject.c:177
> #3  0x95fa94a8 in PyEval_GetFuncDesc ()
> #4  0x95fa6c64 in PyEval_EvalCode ()
> #5  0x95fa9728 in PyEval_GetFuncDesc ()
> #6  0x95fa9580 in PyEval_GetFuncDesc ()
> #7  0x95fa6c64 in PyEval_EvalCode ()
> #8  0x95fa9728 in PyEval_GetFuncDesc ()
> #9  0x95fa9580 in PyEval_GetFuncDesc ()
> #10 0x95fa6c64 in PyEval_EvalCode ()
> #11 0x95fa7e30 in PyEval_EvalCodeEx ()
> #12 0x95fa97dc in PyEval_GetFuncDesc ()
> #13 0x95fa9580 in PyEval_GetFuncDesc ()
> #14 0x95fa6c64 in PyEval_EvalCode ()
> #15 0x95fa7e30 in PyEval_EvalCodeEx ()
> #16 0x95f5f354 in PyFunction_SetClosure ()
> #17 0x95f4a8d0 in PyObject_Call ()
> #18 0x95f529e8 in PyMethod_New ()
> #19 0x95f4a8d0 in PyObject_Call ()
> #20 0x95f4ab7c in PyObject_CallMethod ()
> #21 0x0060eab0 in python_connection (con=0x192c540) at mod_python.c:1313
> #22 0x0003fce4 in ap_run_process_connection (c=0x192c540) at connection.c:42
> #23 0x0002395c in process_socket (p=0x186e598, sock=0x507f20, my_child_num=-267382460,
> my_thread_num=0, bucket_alloc=0x192c540) at worker.c:520
> #24 0x000240bc in worker_thread (thd=0x460e30, dummy=0xf0101140) at worker.c:834
> #25 0x9499d990 in _pthread_body ()
> (gdb) 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira