Hi, Can someone help me out here? Apache_1.3.12 mod_perl 1.21_03 Apache-Session-1.03 ( Database and deamon locker for storing and locking sessions ) -- code snippet -- sub getSESSION { my $self = shift; my $sid = shift; my %SESSION; eval {tie %SESSION, 'Apache::Session::DBI', $sid;} if ($sid); if (! $sid || $@ ) { eval {tie %SESSION, 'Apache::Session::DBI', undef;}; } return \%SESSION; } So if I pass what I know to be a bogus non-null session id (no longer a valid id in the database) it tries the first eval. Based on my understanding of the Apache::Session docs, it should die (shouldn't it?), which should result in $@ being non-null and the first eval should return undef. Then I should be able to call another eval block requesting a new session. Is this right and if so, why am I getting the following messages in the log file? panic: POPSTACK Callback called exit. for each httpd process. I looked at the eval documentation and I've tried using Carp, localizing $SIG{__DIE__) within the eval, but at this point I'm utterly confused and am not sure what is really the cause of the problem. I think that it has something to do with the way perl's die function is being called within this eval because I don't have this problem when the session id I pass is a valid one. Help. thank you, Sang