Skip Menu |
 

This queue is for tickets about the Proc-ProcessTable CPAN distribution.

Report information
The Basics
Id: 3324
Status: stalled
Priority: 0/
Queue: Proc-ProcessTable

People
Owner: Nobody in particular
Requestors: rajeeva [...] research.bell-labs.com
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in:
  • 0.34
  • 0.38
Fixed in: (no value)



Subject: proc::proctable skips process entry
Download (untitled) / with headers
text/plain 1.8k
Hi, I am using Proc::Proctable-0.38 (was using 0.34 earlier) module to monitor a particular process. If the process is not running, I restart it or if the configuration file of the process is newer than the start time of process, I restart it. Here is the code: #!/opt/default/bin/perl use strict; use Time::Local; use Proc::ProcessTable; use Getopt::Std; my %opts; if (! getopts("v",\%opts)) { print "Usage: checkdnsproxy.pl [-v]\n"; exit 1; } my $dnsproxycmd = "/opt/dnsproxy-9.2.1/sbin/dnsproxy"; my $restart=0; my $pid=0; my $start=0; # make sure there is a dnsproxy process running my $table = new Proc::ProcessTable; my @pstable = @{$table->table}; foreach my $p ( @pstable ) { print $p->pid,"\t",$p->cmndline,"\n" if $opts{'v'}; next unless ($p->cmndline =~ /^$dnsproxycmd\s/o); $pid=$p->pid; $start = $p->start; last; } &restart("No running process found") unless ($pid); my @f=stat("/opt/dnsproxy-9.2.1/etc/dnsproxy.conf"); if ($f[9] >= $start) { &restart("Newer config file found") }; sub restart { my ($reason)=@_; print STDERR "starting dnsproxy: $reason\n"; system("killall dnsproxy") if ($pid); system("/etc/local/init.d/dnsproxy.sh start"); exit 0; } This code works fine about 90% of the times, but other times it restarts the dnsproxy even thought it was running earlier with the reason "no process found". The OS I am running is freebsd-4.3 and freebsd 4.4. Both of them have the problem. I have noticed, it happens mostly when machine has about 250+ processes. Also what's interesting is that killall aslo does not kils the existing process (lloks like that also does not finds it). So when I check the machine, the old process since last time is found to be running. This program is run through a cronjob, BTW. Thanks for any information.
Download (untitled) / with headers
text/plain 278b
For now I will stall this bug. It seems that this bug is not specific to Proc::ProcessTable (because of killall's behaviour). This bug is 10 years old. It would be nice if somebody could confirm that this problem still exists, before I take action. If yes, I'll reopen this bug.


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

Please report any issues with rt.cpan.org to rt-cpan-admin@bestpractical.com.