jpg at jgassociates.ca
Fri Jan 20 15:54:04 EST 2006
Sean Jamieson wrote: > Jim Gallacher wrote: > >> Sean Jamieson wrote: >>> apache2/error.log is showing more than a few segfaults... >> >> >> >> Segfaults! Now we are getting somewhere. There are likely some subtle >> differences in the python libraries and apache modules being used on >> the server and laptop. The usual culprits libexpat and mysql clientlib >> used by php, but other libs can cause problems too. These links may >> help you sort it out: >> >> http://www.dscpl.com.au/articles/modpython-006.html >> http://www.modpython.org/FAQ/faqw.py?req=all#2.13 >> >> Jim > > > I made the segfault stop, but I'm not sure why exactly... > to start at the beginning, there was another weirdness going on with > mod_python, that was not a big deal, and I assumed to be "just how it > works": > if my project is in a subdirectory under the document root, I'd have to > do my imports from the document root. > i.e. > DocumentRoot /var/www > Project Root /var/www/project > /var/www/project/index.py: > import project.package.module > this seems strange as I sholud only have to do > import package.module > with out having to include the directory that index.py actually resides > in... > Now, keeping that in mind, I uploaded the source to my dev server, and > to stop the segfaults I simply changes the imports to the second > (expected) from, excluding the 'project' directory from the import path. > *inhale* > > I don't know if that really fixed anything, or just caused some other > error to be happening that prevents the whatever code is segfaulting > from actually being run. > But, in either case, I get no error or output or log messages telling me > useful. All I do get is: > [notice] mod_python: (Re)importing module 'index' with path set to > '['/.....']' > and once in a while this is above it: > [notice] mod_python: (Re)importing module 'mod_python.publisher' Publisher has it's own import and reload mechanism. Using a python import statement for modules that may also be imported by mod_python.publisher may give interesting results. If your project.package.module does not contain functions that are published directly I would suggest moving it completely out of your DocumentRoot and put it somewhere on your python path, or use the apache PythonPath directive to add it to the path. eg. PythonPath "['/home/sean/website-modules/',] + sys.path" This import issue is not likely related to the segfaults however. > OTOH, that link you gave me about PHP's mysql libs conflicting with > mod_python and MySQLdb might be the very thing causing problems, but > BOTH my laptop and my dev server have php4.4.0 installed... and both are > from ubuntu's apt (infact, I haven't custom compiled anything on either > machine since I built them, all are package managed, and recently updated) A few weeks ago I ran apt-get update for python related packages on one of my debian machines and immediately started getting apache segfaults. Turned out that php4-mysql was using libmysqlclient.so.10 and the new python was using libmysqlclient.so.12. Updating php4-mysql brought the 2 libs in line and the segfault went away. I don't think this sort of problem is easily solved by any package manager, so it's something to keep in mind when doing updates. Jim PS. It's a good idea to keep discussions on list.