Hello! I've tried to use Apache::Session (with DBI and SysVSemaphoreLocker), and it failed. Many people replied me here that "Apache::Session is OK". I've set locking to NullLocker, and experienced data corruption. Well, I've put an alarm inside my handler, and it bangs over and over on the same place: === handler.pl == sub handler { my ($r) = @_; return -1 if $r->method !~ /^(GET|POST|HEAD)$/; return -1 if defined($r->content_type) && $r->content_type !~ m|^text/|io; my ($port, $addr) = Socket::sockaddr_in($r->connection->local_addr); return -1 if $port == 8000; local $SIG{ALRM} = sub {Carp::confess "Alarm ";}; alarm 20; my %session; my $cookie = $r->header_in('Cookie'); $cookie =~ s/SESSION_ID=(\w*)/$1/; # Unless exists session_id, clean it! my $dbh = DBI->connect ("DBI:mysql:mail2pager", "*","*", { RaiseError => 1, PrintError => 1, AutoCommit => 1, } ); my $sth = $dbh->prepare_cached(q{ select id from sessions where id = ? }); $sth->execute($cookie); my $rses; $rses = $sth->fetchall_arrayref(); if (scalar @$rses == 0) { $cookie = undef; } tie %session, 'Apache::Session::DBI', $cookie, { DataSource => 'dbi:mysql:mail2pager', UserName => '*', Password => '*'}; $r->header_out("Set-Cookie" => "SESSION_ID=$session{_session_id};") if ( !$cookie ); # This creates a global called %session that is accessible in all components # Feel free to rename this as needed. # local *HTML::Mason::Commands::session = \%session; my $res = $ah->handle_request($r); # warn "\[$$\] Going to untie session $session{_session_id}\n"; # untie %HTML::Mason::Commands::session; alarm 2; untie %session; # warn "\[$$\] Session untied\n"; alarm 0; return $res; } === cut === It ALWAYS bangs like: [Sun Jan 16 22:02:41 2000] [error] Alarm at /usr/local/www/lib/handler.pl line 114 HTML::Mason::__ANON__('ALRM') called at /usr/libdata/perl/5.00503/mach/I PC/Semaphore.pm line 92 IPC::Semaphore::op('IPC::Semaphore=SCALAR(0x88eb6ac)', 15, 0, 4096, 31, 0, 4096, 31, ...) called at /usr/local/lib/perl5/site_perl/5.005/Apache/Session/ SysVSemaphoreLocker.pm line 69 Apache::Session::SysVSemaphoreLocker::acquire_write_lock('Apache::Sessio n::SysVSemaphoreLocker=HASH(0x87c9a84)', 'Apache::Session::DBI=HASH(0x8248a48)') called at /usr/local/lib/perl5/site_perl/5.005/Apache/Session.pm line 560 Apache::Session::acquire_write_lock('Apache::Session::DBI=HASH(0x8248a48 )') called at /usr/local/lib/perl5/site_perl/5.005/Apache/Session.pm line 478 Apache::Session::save('Apache::Session::DBI=HASH(0x8248a48)') called at /usr/local/lib/perl5/site_perl/5.005/Apache/Session.pm line 375 Apache::Session::TIEHASH('Apache::Session::DBI', undef, 'HASH(0x8ac3a64) ') called at /usr/local/www/lib/handler.pl line 136 HTML::Mason::handler('Apache=SCALAR(0x88eb79c)') called at /dev/null lin e 0 eval {...} called at /dev/null line 0 I.e. due to some reason write lock NEVER EVER gets aquired by handler. How do I debug the case? -- Alexander B. Povolotsky [ICQ 18277558] [2:5020/145] [[EMAIL PROTECTED]]