Hi Barry,

I finally got mod_python working on a qemu image of FreeBSD 6.0 and I can't reproduce your problem. All the tests pass for 3.2.6.

I did find that mod_python.so wasn't linking python2.4.so or libpthread.so. Being a BSD noob I'm not sure if I've messed up my configuration or if there is a problem with either configure or dist/setup.py in mod_python. I manually edited src/Makefile to get it to link properly, after which everything compiled and the unit tests passed.

In my stumbling around I came across a reference to a possible problem with libtool 1.15.18 and pthreads, so I upgraded to 1.15.22. I'm not sure if that's significant but I'll try reverting to 1.15.18 and see if that makes a difference.

Here is what my setup looks like:
FreeBSD 6.0
Apache 2.0.54 (prefork) port built WITH_THREADS=1
Python 2.4.1 built from ports with these port options

I notice that we have slight differences in the apache and python versions. Could that be significant? More testing to follow. (Oh if only qemu wasn't so slow. Compiling Apache takes... a ... long ... time).


Barry Pederson wrote:
Still seeing a failure - seems to be the same thing I saw back on 3.2.5b


and suspiciously similar to this report on Mac OSX


FreeBSD 6.0
Apache 2.0.55 (prefork) port built WITH_THREADS=1
Python 2.4.2 built from ports with these port options

ERROR: test_connectionhandler (__main__.PerRequestTestCase)
Traceback (most recent call last):
  File "test.py", line 1336, in test_connectionhandler
    f = urllib.urlopen(url)
  File "/usr/local/lib/python2.4/urllib.py", line 77, in urlopen
    return opener.open(url)
  File "/usr/local/lib/python2.4/urllib.py", line 185, in open
    return getattr(self, name)(url)
  File "/usr/local/lib/python2.4/urllib.py", line 317, in open_http
    return self.http_error(url, fp, errcode, errmsg, headers)
  File "/usr/local/lib/python2.4/urllib.py", line 334, in http_error
    return self.http_error_default(url, fp, errcode, errmsg, headers)
File "/usr/local/lib/python2.4/urllib.py", line 574, in http_error_default
    return addinfourl(fp, headers, "http:" + url)
  File "/usr/local/lib/python2.4/urllib.py", line 863, in __init__
    addbase.__init__(self, fp)
  File "/usr/local/lib/python2.4/urllib.py", line 813, in __init__
    self.read = self.fp.read
AttributeError: 'NoneType' object has no attribute 'read'

Ran 45 tests in 65.420s

FAILED (errors=1)
F  Stopping Apache...
/usr/local/sbin/httpd -k stop -f /home/barryp/mod_python-3.2.6/test/conf/test.conf

FAIL: testPerRequestTests (__main__.PerInstanceTestCase)
Traceback (most recent call last):
  File "test.py", line 1928, in testPerRequestTests

Ran 6 tests in 121.462s

FAILED (failures=1)

GDB backtrace
#0  0x00000058 in ?? ()
#1 0x2849b4f5 in _conn_read () from /home/barryp/mod_python-3.2.6/src/mod_python.so #2 0x2849b6c9 in conn_readline () from /home/barryp/mod_python-3.2.6/src/mod_python.so #3 0x284e4ef2 in PyEval_EvalFrame () from /home/barryp/mod_python-3.2.6/src/mod_python.so #4 0x284e5091 in PyEval_EvalFrame () from /home/barryp/mod_python-3.2.6/src/mod_python.so #5 0x284e56e4 in PyEval_EvalCodeEx () from /home/barryp/mod_python-3.2.6/src/mod_python.so #6 0x2851ede2 in function_call () from /home/barryp/mod_python-3.2.6/src/mod_python.so #7 0x284a5f44 in PyObject_Call () from /home/barryp/mod_python-3.2.6/src/mod_python.so #8 0x284ab986 in instancemethod_call () from /home/barryp/mod_python-3.2.6/src/mod_python.so #9 0x284a5f44 in PyObject_Call () from /home/barryp/mod_python-3.2.6/src/mod_python.so #10 0x284a6119 in PyObject_CallMethod () from /home/barryp/mod_python-3.2.6/src/mod_python.so #11 0x284a35bf in PythonConnectionHandler () from /home/barryp/mod_python-3.2.6/src/mod_python.so
#12 0x0807025a in ap_run_process_connection ()
#13 0x08066285 in child_main ()
#14 0x080664af in make_child ()
#15 0x08066540 in startup_children ()
#16 0x08066bc3 in ap_mpm_run ()
#17 0x0806be77 in main ()

I'm suspicious about whether the problem is actually in the connection handler code - if I strip the test.py down to just run test_connectionhandler, it works fine. But after some trial and error adding things back, it seems the simplest test combination that causes the problem is to run test_fileupload, and then test_connectionhandler.

So I'm basically just running

[EMAIL PROTECTED]:~/mod_python-3.2.6/test>python test2.py

* Running the per-request test suite...
  Creating config....
    listen port: 57772
  Starting Apache....
/usr/local/sbin/httpd -k start -f /home/barryp/mod_python-3.2.6/test/conf/test.conf

  * Testing 1 MB file upload support
    --> Send + process + receive took 0.577 s
  * Testing PythonConnectionHandler
  * Testing internally (status messages go to error_log)

So I wonder if some non-connection-handling code is stomping over some structure that doesn't happen to be used til the connection-handler is exercised? In that case it maybe we can't just shrug it off figuring it's "...hardly likely that anyone would use connection handlers with mod_python for anything meaningful."


Reply via email to