I've implemented this patch at one of our servers. Let's see what happens next few days.<br>Haven't had the time to analyse our issues in more detail. Hopefully this fixes it.<br><br>Regards,<br>Freerk<br><br><div class="gmail_quote">
On Sun, Jan 25, 2009 at 4:32 AM, Mario Becroft <span dir="ltr"><<a href="mailto:mb@gem.win.co.nz">mb@gem.win.co.nz</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I still don't fully understand this problem, but I have a solution.<br>
<br>
I am not very sure about Marcelo's patch because as far as I can see,<br>
NODE_SUSPEND_STATUS is never set to "Suspending". What is this patch<br>
meant to do exactly?<br>
<br>
I found that with slave mode disabled, everything is much easier to<br>
understand, and it does not appear to make it any slower. It did not<br>
exactly fix the problem though, just modified the symptoms.<br>
<br>
The key problem is that when the client nxssh is killed, nxserver hangs<br>
in the echo inside server_nxnode_echo(). It attempts to handle this<br>
situation by installing a SIGPIPE handler that sets<br>
SERVER_CHANNEL=0. Unfortunately, SIGPIPE is never received in this<br>
situation; instead the echo hangs forever. This is what causes it never<br>
to process any more commands from nxnode.<br>
<br>
It is not entirely clear why it happens in this way.<br>
<br>
Anyway, the workaround is to change echo to /bin/echo. /bin/echo returns<br>
immediately if the client is disconnected. Probably it should also check<br>
the status and set SERVER_CHANNEL=0 if /bin/echo failed. However I have<br>
not bothered to do this. It does not seem to matter a great deal.<br>
<br>
This solves the problem both with and without slave mode. I think there<br>
may still be some sort of timing related potential problem here, but I<br>
am not sure, it is all rather complicated.<br>
<br>
I have also noticed another problem that I thought might be related, but<br>
is probably different. If you unplug the network from the currently<br>
logged in client, it takes about 30 seconds before nxagent notices that<br>
the client is gone and suspends the session. If, in this 30-second<br>
window, you login from another client, everything works, but the session<br>
status incorrectly remains in suspended state. I guess this is because<br>
when the second client logs in, it must suspend the session before<br>
restoring it on the new client. Somehow the suspended state of the<br>
session is set after the resumed state. I am out of time and this<br>
problem is not so serious, so I am ignoring it for now. Maybe someone<br>
else has time to look into this one.<br>
<br>
Anyway, for anyone else who has the present problem, please try the<br>
following patch and report back.<br>
<br>
See the patch below (the line numbers might be a bit off since my file<br>
has lots of extra instrumentation):<br>
<div class="Ih2E3d"><br>
--8<---------------cut here---------------start------------->8---<br>
</div>--- nxserver.foo        2009-01-25 16:07:46.590977440 +1300<br>
+++ nxserver    2009-01-25 16:07:54.498952944 +1300<br>
@@ -967,8 +967,8 @@<br>
 server_nxnode_echo()<br>
 {<br>
        log 6 "server_nxnode_echo: $@"<br>
-       [ "$SERVER_CHANNEL" = "1" ] && echo "$@"<br>
-       [ "$SERVER_CHANNEL" = "2" ] && echo "$@" >&2<br>
+       [ "$SERVER_CHANNEL" = "1" ] && /bin/echo "$@"<br>
+       [ "$SERVER_CHANNEL" = "2" ] && /bin/echo "$@" >&2<br>
 }<br>
<br>
 server_nxnode_exit_func()<br>
<div><div></div><div class="Wj3C7c">--8<---------------cut here---------------end--------------->8---<br>
<br>
--<br>
Mario Becroft <<a href="mailto:mb@gem.win.co.nz">mb@gem.win.co.nz</a>><br>
________________________________________________________________<br>
     Were you helped on this list with your FreeNX problem?<br>
    Then please write up the solution in the FreeNX Wiki/FAQ:<br>
<br>
<a href="http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_-_FAQ" target="_blank">http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_-_FAQ</a><br>
<br>
         Don't forget to check the NX Knowledge Base:<br>
                 <a href="http://www.nomachine.com/kb/" target="_blank">http://www.nomachine.com/kb/</a><br>
<br>
________________________________________________________________<br>
       FreeNX-kNX mailing list --- <a href="mailto:FreeNX-kNX@kde.org">FreeNX-kNX@kde.org</a><br>
      <a href="https://mail.kde.org/mailman/listinfo/freenx-knx" target="_blank">https://mail.kde.org/mailman/listinfo/freenx-knx</a><br>
________________________________________________________________<br>
</div></div></blockquote></div><br>