MiniVend Akopia Services

[Date Prev][Date Next][Thread Prev][Thread Next][Minivend by date ][Minivend by thread ]

MiniVend Crash on Digital Unix



Hi all,

I've been working on the Digital Unix (4.0D) crashing problem.  I'm running
MV3.12 with Perl 5.00503.  I've narrowed crash to the lines 890 to 934 in
Server.pm (shown below).  If forking is turned off for this section of code,
MV runs fine.  But when it forks, this is were it hangs.  When I run 'ps'
from the command line, there is only one 'minivend' process running along
with how ever many requests to the catalog and always one defunct process.

I'll continue working on this one and let everyone know what I find.

Bill Rothbauer

if(defined $no_fork) {
    $Vend::NoFork = {};
    $::Instance = {};
    connection();
    undef $Vend::NoFork;
    undef $::Instance;
}
elsif(! defined ($pid = fork) ) {
    #    logGlobal ("Can't fork: $!");
    logGlobal( errmsg('Server.pm:9', "Can't fork: %s", $! ) );
    die ("Can't fork: $!");
}
elsif (! $pid) {
    #fork again
    unless ($pid = fork) {

        $::Instance = {};
        eval

        touch_pid() if $Global::PIDcheck;
        &$Sig_inc;
        connection();
        };
        if ($@) {
            my $msg = $@;
            logGlobal( errmsg('Server.pm:10', "Runtime error: %s" , $msg) );
            logError( errmsg('Server.pm:11', "Runtime error: %s" , $msg) )
       }

       undef $::Instance;
       select(undef,undef,undef,0.050) until getppid == 1;
       if ($Global::PIDcheck) {
           unlink_pid() and &$Sig_dec;
       }
       else {
           &$Sig_dec;
       }
       exit(0);
    }
    exit(0);
}
close Vend::Server::MESSAGE;
last SPAWN if $no_fork;
wait;
}




Search for: Match: Format: Sort by: