changes and bug fixes
authorbdemsky <bdemsky>
Thu, 17 Apr 2008 00:27:59 +0000 (00:27 +0000)
committerbdemsky <bdemsky>
Thu, 17 Apr 2008 00:27:59 +0000 (00:27 +0000)
Robust/src/Runtime/DSTM/interface/dstmserver.c
Robust/src/Runtime/DSTM/interface/objstr.c
Robust/src/Runtime/DSTM/interface/trans.c
Robust/src/Runtime/runtime.c

index 07dc2c8392a921bb747f6b61d1a3b67c450a8135..18c1d0b800b1b994ca072cd5a01412a37df0123e 100644 (file)
@@ -672,6 +672,10 @@ int prefetchReq(int acceptfd) {
          oid = *((unsigned int *)(((char *)header) + sizeof(objheader_t) + offsetarry[i]));
        }
        
+       /* Don't continue if we hit a NULL pointer */
+       if (oid==0)
+         break;
+
        if((header = mhashSearch(oid)) == NULL) {
          size = sizeof(int) + sizeof(char) + sizeof(unsigned int) ;
          char sendbuffer[size];
index 991bd239f7d68fbe198021b979dad508d85ddade..a8910138a1e198d97052470b962b51f5e4b67540 100644 (file)
@@ -60,11 +60,3 @@ void *objstrAlloc(objstr_t *store, unsigned int size)
                        store = store->next;
        }
 }
-
-void clearObjStore() {
-  objstr_t *tmp = prefetchcache;
-  while(tmp != NULL) {
-    bzero(tmp+1, tmp->size);
-    tmp = tmp->next;
-  }
-}
index 4ffc9d254bdeee149f284af8db0febb71484c7d1..3644d968ee5905c3bf77e5ef8136b4816ebf63ee 100644 (file)
@@ -131,7 +131,13 @@ void prefetch(int ntuples, unsigned int *oids, unsigned short *endoffsets, short
   int top=endoffsets[ntuples-1];
   *((int *)(node+len))=ntuples;
   len += sizeof(int);
-  
+  /*  int i;
+  for(i=0;i<ntuples;i++) {
+    if (oids[i]%2==0&&(oids[i]!=0)) {
+      printf("Bad oid %ld\n",oids[i]);
+    }
+    }*/
+
   memcpy(node+len, oids, ntuples*sizeof(unsigned int));
   memcpy(node+len+ntuples*sizeof(unsigned int), endoffsets, ntuples*sizeof(unsigned short));
   memcpy(node+len+ntuples*(sizeof(unsigned int)+sizeof(short)), arrayfields, top*sizeof(short));
@@ -278,7 +284,6 @@ objheader_t *transRead(transrecord_t *record, unsigned int oid) {
   void *buf;
   
   if(oid == 0) {
-    printf("Error: %s, %d oid is NULL \n", __FILE__, __LINE__);
     return NULL;
   }
   
@@ -1025,6 +1030,8 @@ prefetchpile_t *foundLocal(prefetchqelem_t *node) {
     unsigned int oid=oidarray[i];
     int newbase;
     int machinenum;
+    if (oid==0)
+      continue;
     //Look up fields locally
     for(newbase=baseindex;newbase<endindex;newbase++) {
       if (!lookupObject(&oid, arryfields[newbase]))
@@ -1238,7 +1245,7 @@ int getPrefetchResponse(int sd) {
     /* TODO: For each object not found query DHT for new location and retrieve the object */
     /* Throw an error */
     printf("OBJECT %x NOT FOUND.... THIS SHOULD NOT HAPPEN...TERMINATE PROGRAM\n", oid);
-    exit(-1);
+    //    exit(-1);
   } else {
     printf("Error: in decoding the control value %d, %s, %d\n",control, __FILE__, __LINE__);
   }
@@ -1302,9 +1309,8 @@ int startRemoteThread(unsigned int oid, unsigned int mid)
 }
 
 //TODO: when reusing oids, make sure they are not already in use!
+static unsigned int id = 0xFFFFFFFF;
 unsigned int getNewOID(void) {
-       static unsigned int id = 0xFFFFFFFF;
-       
        id += 2;
        if (id > oidMax || id < oidMin)
        {
index 0bb81d2f6b7ca91b0738aa19b8a7303b8ef64ca6..a5c7842552c8de9331987e0edca23b1acd5d3fa7 100644 (file)
@@ -100,7 +100,6 @@ void CALL01(___System______printString____L___String___,struct ___String___ * __
 
 #ifdef DSTM
 void CALL00(___System______clearPrefetchCache____) {
-  clearObjStore();
   prehashClear();
 }
 #endif