<div>We still don&#39;t have permission to install torque-4.0.0, even on our test systems.  However, I thought I would take a look at the source for pbs_mom to see how it works.   It appears, overall, very similiar to 2.5.11.  So I attempted to port my patch to 4.0.0</div>

<div> </div>
<div>This does compile, but I can&#39;t comment on whether or not it will run.  :)</div>
<div> </div>
<blockquote style="MARGIN-RIGHT:0px" dir="ltr">
<div><font face="courier new,monospace">-%&lt;---%&lt;--CUT HERE---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;--</font></div>
<div><font face="courier new,monospace">diff -rN -U4 torque-4.0.0/src/resmom/start_exec.c torque-4.0.0-new/src/resmom/start_exec.c 
<div>--- torque-4.0.0/src/resmom/start_exec.c        2012-02-21 17:43:51.000000000 -0600</div>
<div>+++ torque-4.0.0-new/src/resmom/start_exec.c    2012-03-28 14:34:37.000000000 -0500</div>
<div>@@ -2213,8 +2213,13 @@</div>
<div>   if (TJE-&gt;is_interactive == FALSE)</div>
<div>     {</div>
<div>     int k;</div>
<div>      </div>
<div>+    if (strlen(buf)+5 &lt;= MAXPATHLEN) {</div>
<div>+        memmove(buf+5,buf,strlen(buf)+1);</div>
<div>+        strncpy(buf, &quot;exec &quot;, 5);</div>
<div>+    }</div>
<div>+</div>
<div>     /* pass name of shell script on pipe */</div>
<div>     /* will be stdin of shell  */</div>
<div>  </div>
<div>     close(TJE-&gt;pipe_script[0]);</div>
<div>@@ -3881,9 +3886,9 @@</div>
<div>       {</div>
<div>       arg[aindex] = calloc(1,</div>
<div>                           strlen(path_jobs) +</div>
<div>                           strlen(pjob-&gt;ji_qs.ji_fileprefix) +</div>
<div>-                          strlen(JOB_SCRIPT_SUFFIX) + 1);</div>
<div>+                          strlen(JOB_SCRIPT_SUFFIX) + 6);</div>
<div>  </div>
<div>       if (arg[aindex] == NULL)</div>
<div>         {</div>
<div>         log_err(errno,id,&quot;cannot alloc env&quot;);</div>
<div>@@ -3894,9 +3899,10 @@</div>
<div>  </div>
<div>         return(-1);</div>
<div>         }</div>
<div>  </div>
<div>-      strcpy(arg[aindex], path_jobs);</div>
<div>+      strcpy(arg[aindex], &quot;exec &quot;);</div>
<div>+      strcat(arg[aindex], path_jobs);</div>
<div>       strcat(arg[aindex], pjob-&gt;ji_qs.ji_fileprefix);</div>
<div>       strcat(arg[aindex], JOB_SCRIPT_SUFFIX);</div>
<div>  </div>
<div>       arg[aindex + 1] = NULL;</div></font></div>
<div><font face="courier new,monospace">-%&lt;---%&lt;--CUT HERE---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;---%&lt;--</font></div></blockquote>

<div> </div>
<div>-Alan 
<div> </div>
<div> </div></div>
<div class="gmail_quote">On Mon, Mar 26, 2012 at 11:15 PM, Alan Wild <span dir="ltr">&lt;<a href="mailto:alan@madllama.net">alan@madllama.net</a>&gt;</span> wrote: 
<div> </div>
<blockquote style="BORDER-LEFT:#ccc 1px solid;MARGIN:0px 0px 0px 0.8ex;PADDING-LEFT:1ex" class="gmail_quote">
<div>Sorry, real world intruded the last couple of weeks and I haven&#39;t had a chance to dive back into this.  Yes, for users building Torque with SHELL_USE_ARGV == 1, you would need to modify TMomFinalizeChild().  However, we don&#39;t build Torque this way, so I haven&#39;t had a chance to really test this.  Regardless, I took a stab at making the patch more complete.</div>

<div> </div>
<div>This is against the released 2.5.11:</div>
<div> </div>
<blockquote style="MARGIN-RIGHT:0px" dir="ltr">
<div><font face="courier new,monospace">diff -rN -U2 torque-2.5.11/src/resmom/start_exec.c torque-2.5.11-new/src/resmom/start_exec.c</font></div>
<div><font face="courier new,monospace">--- torque-2.5.11/src/resmom/start_exec.c       2012-03-08 15:34:57.000000000 -0600</font></div>
<div><font face="courier new,monospace">+++ torque-2.5.11-new/src/resmom/start_exec.c   2012-03-26 23:03:56.000000000 -0500</font></div>
<div><font face="courier new,monospace">@@ -1997,4 +1997,9 @@</font></div>
<div><font face="courier new,monospace">     int k;</font></div>
<div><font face="courier new,monospace"> </font></div>
<div><font face="courier new,monospace">+    if (strlen(buf)+5 &lt;= MAXPATHLEN) {</font></div>
<div><font face="courier new,monospace">+        memmove(buf+5,buf,strlen(buf)+1);</font></div>
<div><font face="courier new,monospace">+        strncpy(buf, &quot;exec &quot;, 5);</font></div>
<div><font face="courier new,monospace">+    }</font></div>
<div><font face="courier new,monospace">+</font></div>
<div><font face="courier new,monospace">     /* pass name of shell script on pipe */</font></div>
<div><font face="courier new,monospace">     /* will be stdin of shell  */</font></div>
<div><font face="courier new,monospace">@@ -3641,5 +3646,5 @@</font></div>
<div><font face="courier new,monospace">                           strlen(path_jobs) +</font></div>
<div><font face="courier new,monospace">                           strlen(pjob-&gt;ji_qs.ji_fileprefix) +</font></div>
<div><font face="courier new,monospace">-                          strlen(JOB_SCRIPT_SUFFIX) + 1);</font></div>
<div><font face="courier new,monospace">+                          strlen(JOB_SCRIPT_SUFFIX) + 6);</font></div>
<div><font face="courier new,monospace"> </font></div>
<div><font face="courier new,monospace">       if (arg[aindex] == NULL)</font></div>
<div><font face="courier new,monospace">@@ -3654,5 +3659,6 @@</font></div>
<div><font face="courier new,monospace">         }</font></div>
<div><font face="courier new,monospace"> </font></div>
<div><font face="courier new,monospace">-      strcpy(arg[aindex], path_jobs);</font></div>
<div><font face="courier new,monospace">+      strcpy(arg[aindex], &quot;exec &quot;);</font></div>
<div><font face="courier new,monospace">+      strcat(arg[aindex], path_jobs);</font></div>
<div><font face="courier new,monospace">       strcat(arg[aindex], pjob-&gt;ji_qs.ji_fileprefix);</font></div>
<div><font face="courier new,monospace">       strcat(arg[aindex], JOB_SCRIPT_SUFFIX);</font></div></blockquote>
<div>I would love to know if anyone other than me has played with this patch and whether or not it&#39;s looking viable.</div>
<div> </div>
<div>-Alan</div>
<div> </div>
<div> </div>
<div>On Mon, Mar 19, 2012 at 4:52 AM, &lt;<a href="mailto:torquedev-request@supercluster.org" target="_blank">torquedev-request@supercluster.org</a>&gt; wrote:</div>
<div>&gt;</div>
<div>&gt; I definitely agree that exec&#39;ing the script is the correct way to</div>
<div>&gt; spawn it.  I think the patch is reasonable.</div>
<div>&gt;</div>
<div>&gt; Would &quot;exec &quot; also need to be added to the shell command line in</div>
<div>&gt; TMomFinalizeChild() in the SHELL_USE_ARGV == 1 case?</div>
<div>&gt;</div>
<div>&gt; Michael</div><span class="HOEnZb"><font color="#888888">
<div> </div>
<div>-- </div>
<div><a href="mailto:alan@madllama.net" target="_blank">alan@madllama.net</a> <a href="http://humbleville.blogspot.com/" target="_blank">http://humbleville.blogspot.com</a></div></font></span></blockquote></div>
<div> </div>
<div clear="all"> </div>
<div>-- </div>
<div><a href="mailto:alan@madllama.net">alan@madllama.net</a> <a href="http://humbleville.blogspot.com">http://humbleville.blogspot.com</a></div>
<div> </div>