durusmail: quixote-users: OpenBSD issues
OpenBSD issues
2002-08-02
OpenBSD issues
Robin Wöhler
2002-08-02
Hi all !

I tried running Quixote on a low-end machine (486/100, 40MB, OpenBSD 3.0)
which basically forks fine, except for these two issues:

1) /dev/urandom seems awfully slow (like 4 seconds to get 8 random bytes).
This is not a Quixote problem, but perhaps randlong() might become
a method of the SessionManager class so it's easier/cleaner to override.

2) No signal handling in fcgi.py. The problem - on OpenBSD (Linux/Solaris
don't show this behaviour) - seems to be this: If FastCGI terminates a
process (by SIGTERM) it might interrupt a call to accept(). If this
happens and the signal is not being handled by the process, subsequent
accept()s on the same socket (by a new process) will block forever. The
signal handler does not even have to do anything, it just needs to be
there...

I have pasted a minimal patch below. This is yet incomplete, it works fine
but the terminated app generates an exception (stderr of FCGI instance
not initialized).  Should sys.exit() work from inside a signal handler?
That didn's work when I tried it...


- Robin




--- orig/fcgi.py        Wed May 29 02:36:51 2002
+++ fcgi.py     Thu Jul 11 11:44:48 2002
@@ -37,6 +37,15 @@
 from    cStringIO   import StringIO
 import  cgi

+
+
+def _term_handler(signum, frame):
+    pass
+
+import signal
+signal.signal(signal.SIGTERM, _term_handler)
+
+


Exception:
Traceback (most recent call last):
  File "/var/www/cgi-bin/qtest.fcgi", line 22, in ?
    app.publish_cgi()
  File "/usr/local/lib/python2.1/site-packages/quixote/publish.py", line 658, in
publish_cgi
    f = fcgi.FCGI()
  File "fcgi.py", line 268, in __init__
AttributeError: FCGI instance has no attribute 'conn'
Exception exceptions.AttributeError: "FCGI instance has no attribute 'err'" in
 ignored


reply