Hi Thilo, - I put the patch in the code FreeNX code style and commented. - If you try to mount a folder and share a printer, on one of them the fds will already be closed, so I moved the code to inside the function. (Am I wrong?) - Reduced to 5 the counter of the close loop, FreeNX uses till fd 4.
Can you test the attached patch? Regards, Shima On Tue, Apr 28, 2009 at 1:46 PM, Thilo Uttendorfer < t.uttendor...@linux-ag.com> wrote: > Hi Jeremy, > > On Monday 27 April 2009, Jeremy Wilkins wrote: > > I'm confused as to what this trap and loop accomplish. We can't paste > code > > in until we understand the ramifications of the changes. > > > > After some more debugging and testing I finally solved the problem. > When > > > cmd_node_smbmount (as well as cmd_node_addprinter) is called, the > > > function gets instantly terminated (at least in my setup/environment) > > > because it was not properly detached. > > > > > > I had to add several things to the cmd_node_smbmount call: > > > - Use "double fork" (thanks to [1]) > > > - Use trap > > > - Close all open file handles > > > I try to explain it a bit more detailed: > > - The "double fork" is used to make sure the process outlives the current > shell. I thought this was necessary to detatch the process, but after > running another test, it works without the extra parentheses as well. > Updated patch attached. > - The trap command is used to catch signal 1 (SIGHUP), otherwise the > process > terminates. > - The loop is used to close all open file handles. freenx uses some exec > calls > like "exec 4>&1" but closes only STDIN, STDOUT and STDERR ( "exec 0<&-", > "exec 1>&-", "exec 2>&-" ). Maybe it's too much to close all open file > handles up to 255 (probably only a few are used), but it doesn't harm > either. Anyway, if you don't close these file handles, the process hangs. > > > Thilo > > -- > Thilo Uttendorfer > Linux Information Systems AG > Putzbrunner Str. 71, 81739 München > > t.uttendor...@linux-ag.com, http://www.linux-ag.com > > _______________________________________________ > Mailing list: > https://launchpad.net/~freenx-team<https://launchpad.net/%7Efreenx-team> > Post to : freenx-team@lists.launchpad.net > Unsubscribe : > https://launchpad.net/~freenx-team<https://launchpad.net/%7Efreenx-team> > More help : https://help.launchpad.net/ListHelp > >
=== modified file 'nxnode' --- nxnode 2009-03-01 16:18:34 +0000 +++ nxnode 2009-04-28 17:16:52 +0000 @@ -1430,6 +1430,14 @@ cmd_node_smbmount() { + # The trap signal 1 (SIGHUP), otherwise the process hangs. + trap '' 1 + # Close all open file handles, otherwise the process hangs. + for ((i=3; i<5; i++)) + do + eval "exec $i<&- $i>&-" + done + sessionid=$(getparam_sessionid) port=$(getparam port) username=$(getparam username) @@ -1461,6 +1469,14 @@ cmd_node_addprinter() { + # The trap signal 1 (SIGHUP), otherwise the process hangs. + trap '' 1 + # Close all open file handles, otherwise the process hangs. + for ((i=3; i<5; i++)) + do + eval "exec $i<&- $i>&-" + done + sessionid=$(getparam_sessionid) type=$(getparam type) port=$(getparam port)
_______________________________________________ Mailing list: https://launchpad.net/~freenx-team Post to : freenx-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~freenx-team More help : https://help.launchpad.net/ListHelp