Hi, Im running apache1.3.12/modperl1.24 (static compiled) on redhat6 and I'm getting some strange errors like above, I also get: - Database handler destroyed withouth explicit disconnect at /dev/null line 21 - and I get both errors without the /dev/null bit on the end! I'm sure this bug is in my perl code, but (you saw that coming, right? :) I only get this bug either 1. on every other restart of httpd, sometimes depending on the first url requested or 2. every other request to the same url or 3. for the first X calls to the server then every other request! all three server_errors occur with the same code, which confuses me more than the /dev/null error. I'm thinking this is a config error, but I have no idea why... The config and code...(abridged version, the full version can be temporarily found at http://compsoc.net/~chris/modperl.html if necessary) ---- ServerType standalone ServerRoot "/usr/local/apache" Timeout 30 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15 MinSpareServers 1 MaxSpareServers 20 StartServers 1 MaxClients 40 MaxRequestsPerChild 100 PerlRequire conf/BV.pl <Location /b> SetHandler perl-script perlhandler BV </Location> <Location /login> SetHandler perl-script perlhandler BV::Login </Location> <Location /loginscreen> SetHandler perl-script perlhandler BV::LoginScreen </Location> DocumentRoot /home/chris/system/public_html ------ package BV; use Apache::Constants qw/:common/; use BV::Config; use BV::Common; use DBI; use strict; use vars qw($BV_CONF); sub handler { my $r=shift; if (!$r) { Apache->error("undefined request passed to BV::handler"); return OK; } my $V=bless {r=>$r},"BV"; my @args; ($V->{Location}, $V->{Handler}, $V->{Username}, $V->{UrlSession}, $V->{Command},@args) = split(m(/),$r->path_info); $V->{args}=\@args; if($V->{Handler} eq "kill") { $V->kill_login($V->{UrlSession}); return OK; } $V->{UrlPrefix}=$BV_CONF->{DomainName}. $BV_CONF->{Location}. $BV_CONF->{Handler}; $V->{UrlPrefix}.=$V->{Username}; $V->{ip}=$r->connection->remote_ip; $V->{Session}=check_cookie($V->{r}); ($V->{dbh}=DBI->connect($BV_CONF->{DatabaseName},$BV_CONF->{DatabaseUser},$BV_CONF->{DatabasePass})) or return undef; if(!defined($V->{Session})) { $V->{Session}=$V->{UrlSession}; $V->{UrlPrefix}=$V->{Session}; } else { $V->{UrlPrefix}.="x"; } if($V->{Command} eq "session") { return redirect($V->{r},"$V->{UrlPrefix}"."/top"); } dont_cache($r,"text/html"); $V->{r}->print("test test test"); $V->{dbh}->disconnect; return OK; } sub kill_login{ my ($V,$s) = @_; my $u=$V->{Username}; my $dbh; if(!($dbh=DBI->connect($BV_CONF->{DatabaseName},$BV_CONF->{DatabaseUser},$BV_CONF->{DatabasePass}))) { Log("No handle in kill_login"); return undef; } $dbh->do("DELETE FROM sessions WHERE username='$u' AND session_id='$s'"); Log("DELETE FROM sessions WHERE username=$u AND session_id=$s"); $dbh->disconnect; redirect($V->{r},"$BV_CONF->{DomainName}$BV_CONF->{LoginScreenUrl}"); } 1; ---- There is more but I'll spare you the download just in case... please help.I'm going mad... -- Christopher Lee. http://compsoc.net/~chris