Hi Janno,
again thanks for the debugging and sorry for my sluggish responses. I'm
still away and only have sporadic internet access.
> I'm not familiar with metuxmpm ways and gotchas so i can't really say
> if peruser is better or worse solution than metuxmpm.
It depends on what you are trying to do. It is thread based which means
that everything using it must be thread-safe (PHP isn't by default).
Apart from that there is a reason why apache still has this
MaxRequestPerChild option. Modules tend to have leak memory. When a
process exits all memory is reclaimed, this is not true in case of a thread.
Back to the problem:
Can you apply the attached patch? (Please revert the previous patch
beforehand). It should make the segfaults go away. But it won't fix the
underlying problem (apache can't create a connection). Most probably
those requests which are segfaulting at the moment are some aborted
requests or similar. So simply closing them is the right thing to do. If
your users should start complaining about empty pages or other errors
then please come back to this list and we'll try to track down the root
cause (Because it seems to be hidden somewhere inside apache itself this
may take a few iterations).
Stefan
Index: peruser.c
===================================================================
--- peruser.c (revision 27)
+++ peruser.c (working copy)
@@ -931,12 +931,13 @@
current_conn = ap_run_create_connection(p, ap_server_conf, sock, conn_id,
sbh, bucket_alloc);
_DBG("Looking up the right vhost");
- ap_update_vhost_given_ip(current_conn);
- _DBG("Base server is %s, name based vhosts %s",
current_conn->base_server->server_hostname,
+ if (current_conn) {
+ ap_update_vhost_given_ip(current_conn);
+ _DBG("Base server is %s, name based vhosts %s",
current_conn->base_server->server_hostname,
current_conn->vhost_lookup_data ? "on" : "off");
-
+ }
- if (!current_conn->vhost_lookup_data &&
CHILD_INFO_TABLE[my_child_num].type == CHILD_TYPE_MULTIPLEXER) {
+ if (current_conn && !current_conn->vhost_lookup_data &&
CHILD_INFO_TABLE[my_child_num].type == CHILD_TYPE_MULTIPLEXER) {
_DBG("We are not using name based vhosts, we'll directly pass the
socket.");
sconf = PERUSER_SERVER_CONF(current_conn->base_server->module_config);
_______________________________________________
Peruser mailing list
[email protected]
http://www.telana.com/mailman/listinfo/peruser