LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: ldirectord stopped suddenly

To: "LinuxVirtualServer.org users mailing list." <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: ldirectord stopped suddenly
From: Graeme Fowler <graeme@xxxxxxxxxxx>
Date: Mon, 05 Dec 2005 12:39:45 +0000
Leon Keijser wrote:
[snip]
/etc/init.d/ldirectord: line 59: 25382 Alarm clock             $@

Right... so because you're running in debug mode the init script never
exits, which is useful as it lets us see that it's an un-handled (or
incorrectly set) SIGALRM which is tripping ldirectord up - the "line 59"
in the init script is:

case "$1" in
  start)
  ...
  stop)
  ...
  etc.
esac

In the non-debug case you'd not get that error as the init script would
allow the child process to fork away and manage itself.

So... you're using method "connect". That suggests to me (not being massively over-familiar with ldirectord...) that the "check_connect" routine contains some sort of condition whereby the alarm handler is set, an alarm timer according to connect timeout is started, the connection fails (and therefore the block being 'eval'led dies) but the alarm timer is never reset with an alarm(0).

Problem being (bearing in mind I'm looking at latest CVS version) I cannot for the life of me work out how that would be the case. As far as I can tell the eval block in that subroutine will die upon a connection failure, which means the signal handlers *and* the alarm timer should all simply go away.

Are you running an old version of ldirectord? Can you grab the version string by running "ldirectord -v"?

Graeme

<Prev in Thread] Current Thread [Next in Thread>