Forráskód Böngészése

segfault correction

avadapal 1 éve
szülő
commit
104c6db3f3
2 módosított fájl, 37 hozzáadás és 41 törlés
  1. 17 22
      2p-preprocessing/preprocessing.cpp
  2. 20 19
      duoram-online/duoram.cpp

+ 17 - 22
2p-preprocessing/preprocessing.cpp

@@ -67,11 +67,6 @@ using namespace dpf;
 #include "mpc.h"
 void generate_random_targets(uint8_t **target_share_read, size_t n_threads, bool party, size_t expo)
 {
-    for (size_t i = 0; i < n_threads; i++)
-    {
-        target_share_read[i] = new uint8_t[64];
-    }
-
     for (size_t j = 0; j < 64; ++j)
     {
         for (size_t i = 0; i < n_threads; ++i)
@@ -105,9 +100,9 @@ void compute_CW(bool party, tcp::socket &sout, __m128i L, __m128i R, uint8_t bit
       qfd = open(qfile.c_str(), O_RDWR);
       Y = (__m128i *)mmap(NULL, 8 * sizeof(__m128i),
                           PROT_READ, MAP_PRIVATE, qfd, 0);
-      close(qfd);
-      munmap(X, 8 * sizeof(__m128i));
-      munmap(Y, 8 * sizeof(__m128i));
+      // close(qfd);
+      // munmap(X, 8 * sizeof(__m128i));
+      // munmap(Y, 8 * sizeof(__m128i));
     }
 
     if (!party)
@@ -121,9 +116,9 @@ void compute_CW(bool party, tcp::socket &sout, __m128i L, __m128i R, uint8_t bit
       qfd = open(qfile.c_str(), O_RDWR);
       Y = (__m128i *)mmap(NULL, 8 * sizeof(__m128i),
                           PROT_READ, MAP_PRIVATE, qfd, 0);
-      close(qfd);
-      munmap(X, 8 * sizeof(__m128i));
-      munmap(Y, 8 * sizeof(__m128i));
+      // close(qfd);
+      // munmap(X, 8 * sizeof(__m128i));
+      // munmap(Y, 8 * sizeof(__m128i));
     }
 
     // cw_construction computecw;
@@ -537,13 +532,15 @@ int main(int argc, char *argv[])
 
 
 
-
+		uint8_t **target_share_read = new uint8_t *[thread_per_batch];
+    for (size_t i = 0; i < n_threads; i++) target_share_read[i] = new uint8_t[64];
+    
     for(size_t iters = 0; iters < n_batches; ++iters)
     {
         if (n_batches > 1) {
             printf("Starting evalfull_mpc batch %lu / %lu\n", iters+1, n_batches);
         }
-        uint8_t **target_share_read = new uint8_t *[thread_per_batch];
+        
         generate_random_targets(target_share_read, thread_per_batch, party, expo);
         boost::asio::thread_pool pool(thread_per_batch);
         for (size_t j = 0; j < thread_per_batch; ++j)
@@ -554,28 +551,26 @@ int main(int argc, char *argv[])
         }
 
         pool.join();
-        for(size_t j = 0; j < thread_per_batch; ++j)
-        {
-            delete[] target_share_read[j];
-        }
-        delete[] target_share_read;
+
         convert_shares(output, flags, thread_per_batch, db_nitems, final_correction_word, socketsPb[0], party);
     }
 
-    for(size_t j = 0; j < thread_per_batch; ++j)
+		for(size_t j = 0; j < thread_per_batch; ++j)
     {
-
         free(output[j]);
         free(flags[j]);
+        delete[] target_share_read[j];
     }
+  
     free(output);
     free(flags);
     free(final_correction_word);
-
+    delete[] target_share_read;
+    
     auto end = std::chrono::steady_clock::now();
     std::chrono::duration<double> elapsed_seconds = end - start;
     std::cout << "WallClockTime: " << elapsed_seconds.count() << " s" << std::endl;
     std::cout << "CommunicationCost: " << communication_cost << " bytes" << std::endl;
-    
+
     return 0;
 }

+ 20 - 19
duoram-online/duoram.cpp

@@ -420,24 +420,7 @@ int main(const int argc, const char * argv[])
      std::cout << std::endl << std::endl << "============== DEPENDENT READS END  ==============" << std::endl << std::endl;
     #endif
    #endif
-    
-    free(reading_b);
-    free(reading_c);
-    free(reading_d);
-    free(writing_b);
-    free(writing_c);
-    free(writing_d);
-    free(reading_temp);
-    free(DB);
-    free(updated_DB);
-    free(blinded_DB);
-    free(blinded_DB_recv);
-    free(updated_blinded_DB_recv);
-    free(b);
-    free(c);
-    free(d);
-    free(blinds);
-    free(updated_blinds);
+  
     
     #ifdef ThreeParty
      delete[] read_out;
@@ -445,6 +428,24 @@ int main(const int argc, const char * argv[])
     #endif
   }  
 
+  free(reading_b);
+  free(reading_c);
+  free(reading_d);
+  free(writing_b);
+  free(writing_c);
+  free(writing_d);
+  free(reading_temp);
+  free(DB);
+  free(updated_DB);
+  free(blinded_DB);
+  free(blinded_DB_recv);
+  free(updated_blinded_DB_recv);
+  free(b);
+  free(c);
+  free(d);
+  free(blinds);
+  free(updated_blinds);
+
 auto end_total = std::chrono::steady_clock::now();
 std::chrono::duration<double> elapsed_seconds_total = end_total - start_total;
 //printf("elapsed_seconds_total = %f\n",elapsed_seconds_total.count());
@@ -458,7 +459,7 @@ std::cout << "communication_cost_writes = " << communication_cost_write << " byt
  std::cout << "interleaved_time =  " << dependent_read_time + write_time  << std::endl;
  std::cout << "communication_cost_interleaved = " << (communication_cost_dep_read + communication_cost_write) << " bytes" << std::endl; 
 #endif
-free(reading_temp);
+//free(reading_temp);
 
 	return 0;
 }