2008/12/3 Justin Bronn <[EMAIL PROTECTED]>:
>
>> WSGIDaemonProcess apache user=apache group=apache processes=5
>> threads=5
>
> This could be part of your problem -- it should be `threads=1`.  This
> is because GEOS is not a thread safe library, and the serialization to
> WKT code in particular uses static variables that can cause
> unpredictable behavior if multiple threads enter the code at the same
> time.  Thus, you also made the right choice in choosing a prefork
> version of Apache (which Robert should also be using instead of the
> worker).

Whether you use prefork or worker will not make any difference if you
are using mod_wsgi daemon mode and would only be relevant if using
mod_wsgi embedded mode. If the code isn't thread safe, making daemon
processes run with threads=1 would be important for mod_wsgi daemon
mode though. As mod_python only runs in an embedded mode, for it, use
of prefork would also be important.

Graham

>> > I've been fighting a nearly identical bug to Robert for a while now
>> > too, in fact, but his greater gdb-fu has got him further. my problem
>> > description of the problem is nearly identical:
>>
>> w00t! well. not for you, But i'm glad to know i'm not the only one.
>
> I've been trying to figure this out as well, wish y'all had told me
> sooner!  There's something fishy going on with Intrepid's version of
> Apache.  I was able to get mod_wsgi to deploy on both 32 and 64-bit
> versions, but I experienced an exception (on 32-bit) and a segfault
> (on 64-bit) as a geometry is transformed when trying to view a record
> in the admin.  I've created a ticket to document this behavior:
>
> http://code.djangoproject.com/ticket/9694
>
> The patch fixes the exception on 32-bit, but does not fix the segfault
> on 64-bit.
>
> For 1.1, I'm doing a minor refactor of the GEOS interface (mostly to
> use the non-deprecated IO WKT|WKB reader APIs).  I've created a
> mercurial repo:
>
> http://geodjango.org/hg/gis-geos/
>
> In my current interface I do not explicitly specify the response type
> of character pointers as `c_char_p` this is because ctypes
> automatically converts `c_char_p` to Python string objects in the
> errcheck function, and thus the memory address is not available to be
> freed.  My ctypes-fu has improved, and in the refactor I've created a
> simple subclass of `c_char_p` -- this prevents conversion to a Python
> string object and allows me to free the address, all while explicitly
> setting the expected type of the pointer to be returned.  When I
> replaced with the geos interface refactor, the segfault no longer
> occurs on 64-bit (I've yet to do 32-bit as I'm in the midst of
> finals).  You can check out this changeset for the relevant details:
>
> http://geodjango.org/hg/gis-geos/rev/77f86525906d
>
> Try replacing the geos lib of your django with the one from the repo
> and let me know if it also works for you.
>
> Best Regards,
> -Justin
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to