Hi!
Almost immediately on starting the newest maui we where hit by a buffer
overrun.

Attached patch fixes the problem and hopefully doesn't destroy anything.

-- 
Ake Sandgren, HPC2N, Umea University, S-90187 Umea, Sweden
Internet: [EMAIL PROTECTED]   Phone: +46 90 7866134 Fax: +46 90 7866126
Mobile: +46 70 7716134 WWW: http://www.hpc2n.umu.se
diff -ru site/include/moab-proto.h x86_deb30/include/moab-proto.h
--- site/include/moab-proto.h	2006-10-20 22:37:59.000000000 +0200
+++ x86_deb30/include/moab-proto.h	2006-10-23 11:34:10.000000000 +0200
@@ -405,7 +405,7 @@
 int MJobDistributeTasks(mjob_t *,mrm_t *,mnalloc_t *,short *);
 int MJobTrap(mjob_t *);
 char *MJobGetName(mjob_t *,char *,mrm_t *,char *,int,enum MJobNameEnum);
-int MJobGetStartPriority(mjob_t *,int,double *,int,char *);
+int MJobGetStartPriority(mjob_t *,int,double *,int,char **, int *);
 int MJobGetRunPriority(mjob_t *,int,double *,char *);
 int MJobGetBackfillPriority(mjob_t *,unsigned long,int,double *,char *);
 int MJobGetPartitionAccess(mjob_t *);
diff -ru site/src/moab/MPriority.c x86_deb30/src/moab/MPriority.c
--- site/src/moab/MPriority.c	2006-10-21 19:27:39.000000000 +0200
+++ x86_deb30/src/moab/MPriority.c	2006-10-23 14:01:04.000000000 +0200
@@ -109,7 +109,7 @@
 */
         
 /* Contains:                                  *
- *   int MJobGetStartPriority(J,PIndex,Priority,Buffer) *
+ *   int MJobGetStartPriority(J,PIndex,Priority,Bptr,BSpace) *
  *   int __MJobStartPrioComp(a,b)             *
  *                                            */
 
@@ -140,7 +140,8 @@
   int     PIndex,   /* I */
   double *Priority, /* O */
   int     Mode,     /* I */
-  char   *Buffer)   /* O (optional,minsize=MMAX_BUFFER) */
+  char   **BPtr, /* O (optional,minsize=MMAX_BUFFER) */
+  int *BSpace)   /* O (optional) */
 
   {
   double        Prio;
@@ -203,9 +204,6 @@
 
   unsigned long MinWCLimit;
 
-  char         *BPtr;
-  int           BSpace;
-
   const char *FName = "MJobGetStartPriority";
 
   DBG(6,fSCHED) DPrint("%s(%s,%d,%s,%s)\n",
@@ -213,7 +211,7 @@
     (J != NULL) ? J->Name : "[NONE]",
     PIndex,
     (Priority != NULL) ? "Priority" : "NULL",
-    (Buffer != NULL) ? "Buffer" : "NULL");
+    (BPtr != NULL && *BPtr != NULL) ? "Buffer" : "NULL");
 
   /* NOTE:  NULL 'J' allowed */
 
@@ -226,7 +224,7 @@
 
   if (X.XJobGetStartPriority != (int (*)())0)
     {
-    return((*X.XJobGetStartPriority)(X.xd,J,Priority,Buffer));
+    return((*X.XJobGetStartPriority)(X.xd,J,Priority,*BPtr));
     }
 
   for (index = 1;index < MAX_MPRIOCOMPONENT;index++)
@@ -594,9 +592,7 @@
         }
       }    /* END if (CWeight[mpcUsage] != 0) */
 
-    MUSNInit(&BPtr,&BSpace,Buffer,MMAX_BUFFER);
-
-    MUSNPrintF(&BPtr,&BSpace,"%-20s %10s%c %*s%*s%*s%*s%*s%*s%*s\n",
+    MUSNPrintF(BPtr,BSpace,"%-20s %10s%c %*s%*s%*s%*s%*s%*s%*s\n",
       "Job",
       "PRIORITY",
       '*',
@@ -615,7 +611,7 @@
       (int)strlen(CHeader[mpcUsage]),
       CHeader[mpcUsage]);
 
-    MUSNPrintF(&BPtr,&BSpace,"%20s %10s%c %*s%*s%*s%*s%*s%*s%*s\n",
+    MUSNPrintF(BPtr,BSpace,"%20s %10s%c %*s%*s%*s%*s%*s%*s%*s\n",
       "Weights",
       "--------",
       ' ',
@@ -634,7 +630,7 @@
       (int)strlen(CWLine[mpcUsage]),
       CWLine[mpcUsage]);
 
-    MUSNPrintF(&BPtr,&BSpace,"\n");
+    MUSNPrintF(BPtr,BSpace,"\n");
 
     DBG(5,fUI) DPrint("INFO:     %s header created\n",
       FName);
@@ -747,9 +743,9 @@
         }
       }    /* END for (cindex) */
 
-    MUSNPrintF(&BPtr,&BSpace,"\n");
+    MUSNPrintF(BPtr,BSpace,"\n");
 
-    MUSNPrintF(&BPtr,&BSpace,"%-20s %10s%c %*s%*s%*s%*s%*s%*s%*s\n",
+    MUSNPrintF(BPtr,BSpace,"%-20s %10s%c %*s%*s%*s%*s%*s%*s%*s\n",
       "Percent Contribution",
       "--------",
       ' ',
@@ -768,9 +764,9 @@
       (int)strlen(CFooter[mpcUsage]),
       CFooter[mpcUsage]);
 
-    MUSNPrintF(&BPtr,&BSpace,"\n");
+    MUSNPrintF(BPtr,BSpace,"\n");
 
-    MUSNPrintF(&BPtr,&BSpace,"* indicates system prio set on job\n");
+    MUSNPrintF(BPtr,BSpace,"* indicates system prio set on job\n");
 
     return(SUCCESS);
     }  /* END if (Mode == 2) */
@@ -1223,7 +1219,7 @@
     APrio += ABS((double)CWeight[index] * CFactor[index]);
     }  /* END for (index) */
 
-  if (Buffer != NULL)
+  if (BPtr != NULL && *BPtr != NULL)
     {
     TotalPriority += APrio;
 
@@ -1496,7 +1492,7 @@
         }
       }    /* END if (CWeight[mpcUsage] != 0) */
 
-    MUSNPrintF(&BPtr,&BSpace,"%-20s %10.0lf%c %*s%*s%*s%*s%*s%*s%*s\n",
+    MUSNPrintF(BPtr,BSpace,"%-20s %10.0lf%c %*s%*s%*s%*s%*s%*s%*s\n",
       J->Name,
       Prio,
       (J->SystemPrio > 0) ? '*' : ' ',
@@ -1514,7 +1510,7 @@
       CLine[mpcRes],
       (int)strlen(CLine[mpcUsage]),
       CLine[mpcUsage]);
-    } /* END if (Buffer != NULL) */
+    } /* END if (BPtr != NULL) */
 
   /* clip prio at min value */
 
diff -ru site/src/moab/MQueue.c x86_deb30/src/moab/MQueue.c
--- site/src/moab/MQueue.c	2006-10-21 19:27:39.000000000 +0200
+++ x86_deb30/src/moab/MQueue.c	2006-10-23 14:00:27.000000000 +0200
@@ -199,7 +199,7 @@
       {
       J = MJob[JobIndex[jindex]];
 
-      MJobGetStartPriority(J,0,&tmpD,0,NULL);
+      MJobGetStartPriority(J,0,&tmpD,0,NULL,NULL);
  
       J->StartPriority = (unsigned long)tmpD;
 
@@ -221,7 +221,7 @@
 
     for (J = Q[0]->Next;J != Q[0];J = J->Next)
       {
-      MJobGetStartPriority(J,0,&tmpD,0,NULL);
+      MJobGetStartPriority(J,0,&tmpD,0,NULL,NULL);
 
       J->StartPriority = (unsigned long)tmpD;
 
diff -ru site/src/server/UserI.c x86_deb30/src/server/UserI.c
--- site/src/server/UserI.c	2006-10-21 19:27:39.000000000 +0200
+++ x86_deb30/src/server/UserI.c	2006-10-23 12:30:11.000000000 +0200
@@ -5186,6 +5186,8 @@
   double tmpD;
  
   mjob_t *J;
+  char *BPtr;
+  int BSpace;
  
   const char *FName = "UIDiagnosePriority";
  
@@ -5193,14 +5195,14 @@
     FName,
     (P != NULL) ? P->Name : "NULL");
  
-  Buffer[0] = '\0';
+  MUSNInit(&BPtr,&BSpace,Buffer,(int)*BufSize);
  
-  sprintf(Buffer,"diagnosing job priority information (partition: %s)\n\n",
+  MUSNPrintF(&BPtr, &BSpace, "diagnosing job priority information (partition: %s)\n\n",
     P->Name);
  
   /* initialize priority statistics */
  
-  MJobGetStartPriority(NULL,P->Index,NULL,1,Buffer);
+  MJobGetStartPriority(NULL,P->Index,NULL,1,&BPtr, &BSpace);
  
   JobCount = 0;
  
@@ -5214,7 +5216,7 @@
     DBG(5,fUI) DPrint("INFO:     diagnosing priority for job '%s'\n",
       J->Name);
  
-    MJobGetStartPriority(J,P->Index,&tmpD,0,Buffer); 
+    MJobGetStartPriority(J,P->Index,&tmpD,0,&BPtr, &BSpace); 
  
     J->StartPriority = (long)tmpD;
  
@@ -5223,7 +5225,7 @@
  
   if (JobCount > 0)
     {
-    MJobGetStartPriority(NULL,P->Index,NULL,2,Buffer);
+    MJobGetStartPriority(NULL,P->Index,NULL,2,&BPtr, &BSpace);
     }
   else
     {
_______________________________________________
mauiusers mailing list
[email protected]
http://www.supercluster.org/mailman/listinfo/mauiusers

Reply via email to