Index: pcp/src/grad.c
===================================================================
--- pcp/src/grad.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/grad.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -91,5 +91,5 @@
   Grad->GradientArray[GraSchGradient] = NULL;
   for (i=1; i<MaxGradientArrayTypes; i++)
-    Free(Grad->GradientArray[i]);
+    Free(Grad->GradientArray[i], "RemoveGradients: Grad->GradientArray[i]");
 }
 
Index: pcp/src/gramsch.c
===================================================================
--- pcp/src/gramsch.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/gramsch.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -698,6 +698,6 @@
       fprintf(stderr,"(%i) MyLocalNo = %i, MyGlobalNo = %i/%i, f = %lg, Type: %i, GramSch: %i, me_comm: %d, my_color_comm: %d \n",P->Par.me, Psi->AllPsiStatus[i].MyLocalNo, i, Psi->AllPsiStatus[i].MyGlobalNo, Psi->AllPsiStatus[i].PsiFactor, Psi->AllPsiStatus[i].PsiType, Psi->AllPsiStatus[i].PsiGramSchStatus, Psi->AllPsiStatus[i].me_comm_ST_Psi, Psi->AllPsiStatus[i].my_color_comm_ST_Psi);
       
-  Free(recvcounts);
-  Free(displs);
+  Free(recvcounts, "UpdateGramSchAllPsiStatus: recvcounts");
+  Free(displs, "UpdateGramSchAllPsiStatus: displs");
 }
 
Index: pcp/src/init.c
===================================================================
--- pcp/src/init.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/init.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -106,5 +106,5 @@
   }
   if (setit) strcat(P->Files.mainname,"/");
-  if (dummy) Free(dummy);
+  if (dummy) Free(dummy, "CreateMainname: dummy");
   P->Files.mainpath = (char*) /* Speicher fuer P->Files.mainname */
     Malloc(strlen(P->Files.mainname)+10, "CreateMainname - P->Files.mainpath");
@@ -520,12 +520,12 @@
   }
     
-  Free(GlobalGArray);
-  Free(GlobalGArray_sort);
+  Free(GlobalGArray, "HashGArray: GlobalGArray");
+  Free(GlobalGArray_sort, "HashGArray: GlobalGArray_sort");
   for (i=0;i<NDIM;i++) {
-    Free(G[i]);
-    Free(G_send[i]);
-  }
-  Free(G);
-  Free(G_send);
+    Free(G[i], "HashGArray: G[i]");
+    Free(G_send[i], "HashGArray: G_send[i]");
+  }
+  Free(G, "HashGArray: G");
+  Free(G_send, "HashGArray: G_send");
 }
 
@@ -1321,10 +1321,10 @@
       if (feof(file)) {
         if ((critical) && (found == 0)) {
-          Free(free_dummy);
+          Free(free_dummy, "ParseForParameter: free_dummy");
           Error(InitReading, name);
         } else {
           //if (!sequential)
           fseek(file, file_position, SEEK_SET);  // rewind to start position
-          Free(free_dummy);          
+          Free(free_dummy, "ParseForParameter: free_dummy");          
           return 0;
         }
@@ -1356,5 +1356,5 @@
 				dummy = strchr(dummy1, '\n');	// set on line end then (whole line = keyword)
 				//fprintf(stderr,"(%i)Error: Cannot find tabs or spaces on line %i in search for %s\n", me, line, name);
-        //Free(free_dummy);
+        //Free(free_dummy, "ParseForParameter: free_dummy");
 		    //Error(FileOpenParams, NULL);			
 			} else {
@@ -1376,10 +1376,10 @@
               if (feof(file)) {
                 if ((critical) && (found == 0)) {
-                  Free(free_dummy);
+                  Free(free_dummy, "ParseForParameter: free_dummy");
                   Error(InitReading, name);
                 } else {
                   //if (!sequential) 
                   fseek(file, file_position, SEEK_SET);  // rewind to start position
-                  Free(free_dummy);
+                  Free(free_dummy, "ParseForParameter: free_dummy");
                   return 0;
                 }
@@ -1425,5 +1425,5 @@
 								if ((j < yth-1) && (type < 4)) {	// check if xth value or not yet
 									if (verbose) fprintf(stderr,"(%i)Error: EoL at %i and still missing %i value(s) for parameter %s\n", me, line, yth-j, name);
-                  Free(free_dummy);
+                  Free(free_dummy, "ParseForParameter: free_dummy");
 									return 0;
 							    //Error(FileOpenParams, NULL);			
@@ -1482,5 +1482,5 @@
 	}	
   if ((type >= row_int) && (verbose)) fprintf(stderr,"\n");
-	Free(free_dummy);
+  Free(free_dummy, "ParseForParameter: free_dummy");
 	if (!sequential) fseek(file, file_position, SEEK_SET);	// rewind to start position
 	//fprintf(stderr, "(%i) End of Parsing\n\n",me);
@@ -1871,5 +1871,5 @@
   EnergyOutput(P,0);
   InitOutVisArray(P);
-  Free(P->Lat.GArrayForSort);
+  Free(P->Lat.GArrayForSort, "Init: P->Lat.GArrayForSort");
   P->Speed.InitSteps++;
 }
Index: pcp/src/myfft.c
===================================================================
--- pcp/src/myfft.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/myfft.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -221,5 +221,5 @@
     fprintf(stderr,"\n");
   }
-  Free(plan->pwFS);
+  Free(plan->pwFS, "fft_3d_create_plan: plan->pwFS");
   plan->pwFS = NULL;
 
@@ -306,12 +306,12 @@
   }
   if (plan->local_data != NULL) {
-    Free(plan->local_data);
+    Free(plan->local_data, "fft_3d_create_plan: plan->local_data");
     plan->local_data = NULL;
   }
   if (plan->work != NULL) {
-    Free(plan->work);
+    Free(plan->local_data, "fft_3d_create_plan: plan->local_data");
     plan->work = NULL;
   }
-  Free(MaxNFields);
+  Free(MaxNFields, "fft_3d_create_plan: MaxNFields");
   return plan;
 }
@@ -327,24 +327,24 @@
       rfftwnd_destroy_plan(plan->Levplan[i].yzplanRC[j]);
     }
-    Free(plan->Levplan[i].xplanCR);
-    Free(plan->Levplan[i].xplanRC);
-    Free(plan->Levplan[i].yzplanCR);
-    Free(plan->Levplan[i].yzplanRC);
-    Free(plan->NFields[i]);
-  }
-  Free(plan->MaxNoOfnFields);
-  Free(plan->NFields);
-  Free(plan->Levplan);
-  Free(plan->PENo);
+    Free(plan->Levplan[i].xplanCR, "fft_3d_destroy_plan: plan->Levplan[i].xplanCR");
+    Free(plan->Levplan[i].xplanRC, "fft_3d_destroy_plan: plan->Levplan[i].xplanRC");
+    Free(plan->Levplan[i].yzplanCR, "fft_3d_destroy_plan: plan->Levplan[i].yzplanCR");
+    Free(plan->Levplan[i].yzplanRC, "fft_3d_destroy_plan: plan->Levplan[i].yzplanRC");
+    Free(plan->NFields[i], "fft_3d_destroy_plan: plan->NFields[i]");
+  }
+  Free(plan->MaxNoOfnFields, "fft_3d_destroy_plan: plan->MaxNoOfnFields");
+  Free(plan->NFields, "fft_3d_destroy_plan: plan->NFields");
+  Free(plan->Levplan, "fft_3d_destroy_plan: plan->Levplan");
+  Free(plan->PENo, "fft_3d_destroy_plan: plan->PENo");
   plan->PENo = NULL;
-  Free(plan->LevelSizes);
+  Free(plan->LevelSizes, "fft_3d_destroy_plan: plan->LevelSizes");
   plan->LevelSizes = NULL;
-  Free(plan->Lev_CR_RC);
+  Free(plan->Lev_CR_RC, "fft_3d_destroy_plan: plan->Lev_CR_RC");
   plan->Lev_CR_RC = NULL;
-  Free(plan->pw);
+  Free(plan->pw, "fft_3d_destroy_plan: plan->pw");
   plan->pw = NULL;
   plan->Levplan = NULL;
   MPI_Comm_free(&plan->comm);
-  Free(plan);
+  Free(plan, "fft_3d_destroy_plan: plan");
 }
 
Index: pcp/src/opt.c
===================================================================
--- pcp/src/opt.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/opt.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -29,6 +29,6 @@
  */
 static void FreeDebugStr(void) {
-  if (DebugString) Free(DebugString);
-  if (program_name) Free(program_name);
+  if (DebugString) Free(DebugString, "FreeDebugStr: DebugString");
+  if (program_name) Free(program_name, "FreeDebugStr: program_name");
 }
 
@@ -68,5 +68,5 @@
       break;
     case 'd':
-      if (DebugString) Free(DebugString);
+      if (DebugString) Free(DebugString, "GetOptions: DebugString");
       Call->debug = 1;
       DebugString = (char *)Malloc(strlen(optarg)+1, "GetOptions");
@@ -74,5 +74,5 @@
       break;
     case 'D':
-      if (DebugString) Free(DebugString);
+      if (DebugString) Free(DebugString, "GetOptions: DebugString");
       DebugString = (char *)Malloc(strlen(optarg)+1, "GetOptions");
       strcpy(DebugString, optarg);
Index: pcp/src/output.c
===================================================================
--- pcp/src/output.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/output.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -80,14 +80,14 @@
       if (*file != 0) {
       	if (verbose) fprintf(stderr,"(%i) Default file is open: %s\n",P->Par.me,name);
-      	Free(name);
+      	Free(name, "OpenFile: name");
       	return(1);
       }
     }
     fprintf(stderr,"\n(%i)Error: Cannot open neither normal nor default file: %s\n",P->Par.me,name);
-    Free(name);
+    Free(name, "OpenFile: name");
     return(0);
   } else {
     if(verbose) fprintf(stderr,"(%i) File is open: %s\n",P->Par.me,name);
-    Free(name);
+		Free(name, "OpenFile: name");
     return(1);
   }
@@ -121,14 +121,14 @@
       if (*file != 0) {
       	if(verbose) fprintf(stderr,"(%i) Default file is open: %s\n", P->Par.me, name);
-      	Free(name);
+      	Free(name, "OpenFileNo2: name");
       	return(1);
       }
     }
     fprintf(stderr,"\n(%i)Error: Cannot open file: %s\n", P->Par.me, name);
-    Free(name);
+    Free(name, "OpenFileNo2: name");
     return(0);
   } else {
     if(verbose) fprintf(stderr,"(%i) File is open: %s\n",P->Par.me, name);
-    Free(name);
+    Free(name, "OpenFileNo2: name");
     return(1);
   }
@@ -163,14 +163,14 @@
       if (*file != 0) {
       	if(verbose) fprintf(stderr,"(%i) Default file is open: %s\n", P->Par.me, name);
-      	Free(name);
+      	Free(name, "OpenFileNo: name");
       	return(1);
       }
     }
     fprintf(stderr,"\n(%i)Error: Cannot open file: %s\n", P->Par.me, name);
-    Free(name);
+    Free(name, "OpenFileNo: name");
     return(0);
   } else {
     if(verbose) fprintf(stderr,"(%i) File is open: %s\n", P->Par.me, name);
-    Free(name);
+    Free(name, "OpenFileNo: name");
     return(1);
   }
@@ -200,9 +200,9 @@
   if (*file == 0) {
     fprintf(stderr,"\n(%i)Error: Cannot open file: %s\n", P->Par.me, name);
-    Free(name);
+    Free(name, "OpenFileNoPost: name");
     return(0);
   } else {
     if(verbose) fprintf(stderr,"(%i) File is open: %s\n", P->Par.me, name);
-    Free(name);
+    Free(name, "OpenFileNoPost: name");
     return(1);
   }
@@ -229,9 +229,9 @@
   if(*file == 0) {
     fprintf(stderr,"\n(%i)Error: Cannot open file: %s\n", P->Par.me, name);
-    Free(name);
+    Free(name, "OpenFileNoNo: name");
     return(0);
   }
   if(verbose) fprintf(stderr,"(%i) File is open: %s\n", P->Par.me, name);
-  Free(name);
+  Free(name, "OpenFileNoNo: name");
   return(1);
 }
@@ -859,6 +859,6 @@
 
   fclose(DensityDx);
-  Free(posname);
-  Free(datname);
+  Free(posname, "CreateDensityOutputGeneral: posname");
+  Free(datname, "CreateDensityOutputGeneral: datname");
 }
 
@@ -1363,5 +1363,5 @@
       fclose(SrcIonData);
     }
-    if (Max_IonsOfType != NULL) Free(Max_IonsOfType);
+    if (Max_IonsOfType != NULL) Free(Max_IonsOfType, "Max_IonsOfType");
   }
   return 1;
@@ -1788,4 +1788,4 @@
       Error(SomeError, "PlotRealDensity: MPI_Send failure!"); 
   }
-  Free(buffer);
-}
+  Free(buffer, "PlotRealDensity: buffer");
+}
Index: pcp/src/pcp.c
===================================================================
--- pcp/src/pcp.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/pcp.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -741,6 +741,6 @@
 	    avarage, stddev);   
   }
-  if (!P->Par.me_comm_ST_Psi) Free(A);
-  if (!P->Par.me_comm_ST_PsiT && !P->Par.me_comm_ST_Psi) Free(AT);
+  if (!P->Par.me_comm_ST_Psi) Free(A, "TestGSfft: A");
+  if (!P->Par.me_comm_ST_PsiT && !P->Par.me_comm_ST_Psi) Free(AT, "TestGSfft: AT");
 }
 #endif
Index: pcp/src/perturbed.c
===================================================================
--- pcp/src/perturbed.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/perturbed.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -2882,6 +2882,6 @@
   UnLockDensityArray(Dens0,GapDownDensity,real); // Psip1R
 //  for (i=0;i<Num;i++)
-//    if (x_l[i] != NULL) Free(x_l[i]);         
-//  Free(x_l);
+//    if (x_l[i] != NULL) Free(x_l[i], "bla", "bla");         
+//  Free(x_l, "bla");
   gsl_multimin_fdfminimizer_free (minset);
   gsl_vector_free (x);            
@@ -2960,5 +2960,5 @@
   recvbuf = (double *) Malloc(gsize * p_num * sizeof(double), "CalculateOverlap: recvbuf");
   MPI_Allgather(sendbuf, p_num, MPI_DOUBLE, recvbuf, p_num, MPI_DOUBLE, P->Par.comm_ST_PsiT);
-  Free(sendbuf);
+  Free(sendbuf, "bla");
   for (i=0;i<gsize;i++) {// extract results from other processes out of receiving buffer
     m = recvbuf[i*p_num]; // m is ActNum of the process whose results we've just received
@@ -2967,5 +2967,5 @@
       Psi->Overlap[m][j-1] = Psi->Overlap[j-1][m] = recvbuf[i*p_num+j]; // put each entry into correspondent Overlap row
   }
-  Free(recvbuf);
+  Free(recvbuf, "bla");
 }
 
Index: pcp/src/pseudo.c
===================================================================
--- pcp/src/pseudo.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/pseudo.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -678,83 +678,83 @@
   struct Ions *I = &P->Ion;
   struct Lattice *Lat = &P->Lat;
-  Free(PP->integrand1);
-  Free(PP->integrand);
-  Free(PP->dfnl); 
-  Free(PP->rr);
-  Free(PP->t);
+  Free(PP->integrand1, "RemovePseudoRead: PP->integrand1");
+  Free(PP->integrand, "RemovePseudoRead: PP->integrand");
+  Free(PP->dfnl, "RemovePseudoRead: PP->dfnl"); 
+  Free(PP->rr, "RemovePseudoRead: PP->rr");
+  Free(PP->t, "RemovePseudoRead: PP->t");
   for (i=0; i< Lat->Psi.LocalNo+1; i++) {
     for (it=0; it < I->Max_Types; it++) {
       for (il =0; il < PP->lm_end[it]; il++) 
-      	Free(PP->fnl[i][it][il]);
-      Free(PP->fnl[i][it]);
-    }
-    Free(PP->fnl[i]); 
+      	Free(PP->fnl[i][it][il], "RemovePseudoRead: PP->fnl[i][it][il]");
+      Free(PP->fnl[i][it], "RemovePseudoRead: PP->fnl[i][it]");
+    }
+    Free(PP->fnl[i], "RemovePseudoRead: PP->fnl[i]"); 
   }
   for (it=0; it < I->Max_Types; it++) {
     if (I->I[it].corecorr == CoreCorrected) {
-      Free(PP->corewave[it]);
-      Free(PP->formfCore[it]);
+      Free(PP->corewave[it], "RemovePseudoRead: PP->corewave[it]");
+      Free(PP->formfCore[it], "RemovePseudoRead: PP->formfCore[it]");
     }
   }
   for (it=0; it < I->Max_Types; it++) {
     for (il=0; il < PP->nang[it]; il++) {
-      Free(PP->R[it][il]);
-      Free(PP->v_loc[it][il]);
+      Free(PP->R[it][il], "RemovePseudoRead: PP->R[it][il]");
+      Free(PP->v_loc[it][il], "RemovePseudoRead: PP->v_loc[it][il]");
     }
     for (il=0; il < 3; il++) {
-      Free(PP->rcl[it][il]);
-      Free(PP->al[it][il]);
-      Free(PP->bl[it][il]);
+      Free(PP->rcl[it][il], "RemovePseudoRead: PP->rcl[it][il]");
+      Free(PP->al[it][il], "RemovePseudoRead: PP->al[it][il]");
+      Free(PP->bl[it][il], "RemovePseudoRead: PP->bl[it][il]");
     }
     for (il=0;il<PP->lm_end[it];il++) {
-      //Free(PP->phi_ps_nl[it][il]);
-      Free(PP->phi_ps_nl[it][il]);
+      //Free(PP->phi_ps_nl[it][il], "RemovePseudoRead: PP->phi_ps_nl[it][il]");
+      Free(PP->phi_ps_nl[it][il], "RemovePseudoRead: PP->phi_ps_nl[it][il]");
     }
     for (ia=0;ia<I->I[it].Max_IonsOfType;ia++) {
-      Free(PP->ei[it][ia]);
-      Free(PP->expiGR[it][ia]);
-    }
-    Free(PP->ei[it]);
-    Free(PP->expiGR[it]);
-    //Free(PP->phi_ps_nl[it]);
-    Free(PP->phi_ps_nl[it]);
-    Free(PP->R[it]);
-    Free(PP->v_loc[it]);
-    Free(PP->r[it]);
-    Free(PP->integrand2[it]);
-    Free(PP->rcl[it]);
-    Free(PP->al[it]);
-    Free(PP->bl[it]);
-    Free(PP->FacGauss[it]);
-    Free(PP->phi_ps_loc[it]);
-    Free(PP->core[it]);
-    Free(PP->rc[it]);
-    Free(PP->wNonLoc[it]);
-  }
-  //Free(PP->phi_ps_nl);
-  Free(PP->phi_ps_nl);
-  Free(PP->R);
-  Free(PP->v_loc);
-  Free(PP->r);
-  Free(PP->integrand2);
-  Free(PP->rcl);
-  Free(PP->al);
-  Free(PP->bl);
-  Free(PP->FacGauss);
-  Free(PP->phi_ps_loc);
-  Free(PP->core);
-  Free(PP->rc);
-  Free(PP->wNonLoc);
-  Free(PP->ei);
-  Free(PP->expiGR);
-  Free(PP->corewave);
-  Free(PP->formfCore);
-  Free(PP->fnl); 
-  Free(PP->VCoulombc);
-  Free(PP->lm_end);
-  Free(PP->zval);
-  Free(PP->nang);
-  Free(PP->mmax);
-  Free(PP->clog);
+      Free(PP->ei[it][ia], "RemovePseudoRead: PP->ei[it][ia]");
+      Free(PP->expiGR[it][ia], "RemovePseudoRead: PP->expiGR[it][ia]");
+    }
+    Free(PP->ei[it], "RemovePseudoRead: PP->ei[it]");
+    Free(PP->expiGR[it], "RemovePseudoRead: PP->expiGR[it]");
+    //Free(PP->phi_ps_nl[it], "RemovePseudoRead: PP->phi_ps_nl[it]");
+    Free(PP->phi_ps_nl[it], "RemovePseudoRead: PP->phi_ps_nl[it]");
+    Free(PP->R[it], "RemovePseudoRead: PP->R[it]");
+    Free(PP->v_loc[it], "RemovePseudoRead: PP->v_loc[it]");
+    Free(PP->r[it], "RemovePseudoRead: PP->r[it]");
+    Free(PP->integrand2[it], "RemovePseudoRead: PP->integrand2[it]");
+    Free(PP->rcl[it], "RemovePseudoRead: PP->rcl[it]");
+    Free(PP->al[it], "RemovePseudoRead: PP->al[it]");
+    Free(PP->bl[it], "RemovePseudoRead: PP->bl[it]");
+    Free(PP->FacGauss[it], "RemovePseudoRead: PP->FacGauss[it]");
+    Free(PP->phi_ps_loc[it], "RemovePseudoRead: PP->phi_ps_loc[it]");
+    Free(PP->core[it], "RemovePseudoRead: PP->core[it]");
+    Free(PP->rc[it], "RemovePseudoRead: PP->rc[it]");
+    Free(PP->wNonLoc[it], "RemovePseudoRead: PP->wNonLoc[it]");
+  }
+  //Free(PP->phi_ps_nl, "RemovePseudoRead: PP->phi_ps_nl");
+  Free(PP->phi_ps_nl, "RemovePseudoRead: PP->phi_ps_nl");
+  Free(PP->R, "RemovePseudoRead: PP->R");
+  Free(PP->v_loc, "RemovePseudoRead: PP->v_loc");
+  Free(PP->r, "RemovePseudoRead: PP->r");
+  Free(PP->integrand2, "RemovePseudoRead: PP->integrand2");
+  Free(PP->rcl, "RemovePseudoRead: PP->rcl");
+  Free(PP->al, "RemovePseudoRead: PP->al");
+  Free(PP->bl, "RemovePseudoRead: PP->bl");
+  Free(PP->FacGauss, "RemovePseudoRead: PP->FacGauss");
+  Free(PP->phi_ps_loc, "RemovePseudoRead: PP->phi_ps_loc");
+  Free(PP->core, "RemovePseudoRead: PP->core");
+  Free(PP->rc, "RemovePseudoRead: PP->rc");
+  Free(PP->wNonLoc, "RemovePseudoRead: PP->wNonLoc");
+  Free(PP->ei, "RemovePseudoRead: PP->ei");
+  Free(PP->expiGR, "RemovePseudoRead: PP->expiGR");
+  Free(PP->corewave, "RemovePseudoRead: PP->corewave");
+  Free(PP->formfCore, "RemovePseudoRead: PP->formfCore");
+  Free(PP->fnl, "RemovePseudoRead: PP->fnl"); 
+  Free(PP->VCoulombc, "RemovePseudoRead: PP->VCoulombc");
+  Free(PP->lm_end, "RemovePseudoRead: PP->lm_end");
+  Free(PP->zval, "RemovePseudoRead: PP->zval");
+  Free(PP->nang, "RemovePseudoRead: PP->nang");
+  Free(PP->mmax, "RemovePseudoRead: PP->mmax");
+  Free(PP->clog, "RemovePseudoRead: PP->clog");
 }
 
Index: pcp/src/wannier.c
===================================================================
--- pcp/src/wannier.c	(revision 32de28ca6726b18cb1f6631dcc610e6c1a791143)
+++ pcp/src/wannier.c	(revision 64fa9e98520d2aa127f3401ead3dec3996a48502)
@@ -96,6 +96,6 @@
   fprintf(stderr,"\n");*/
   // and finito
-  Free(old_top);
-  Free(old_bot);
+  Free(old_top, "bla");
+  Free(old_bot, "bla");
 }
 
@@ -490,9 +490,9 @@
   // free lookups
   for (i=0;i<NDIM;i++) {
-    Free(cos_lookup[i]);
-    Free(sin_lookup[i]);
-  }
-  Free(cos_lookup);
-  Free(sin_lookup);
+    Free(cos_lookup[i], "bla");
+    Free(sin_lookup[i], "bla");
+  }
+  Free(cos_lookup, "bla");
+  Free(sin_lookup, "bla");
   
   if(P->Call.out[ReadOut]) fprintf(stderr,"(%i) STEP 1\n",P->Par.me);
@@ -800,15 +800,15 @@
       // Free column vectors
       for (k=0;k<max_operators+1;k++) {
-        Free(Atotal[k]);
-        Free(Around[k]);
-      }
-      Free(Uround);
-      Free(Utotal);
-      Free(c_all);
-      Free(s_all);
-      Free(c);
-      Free(s);
-      Free(rcounts);
-      Free(rdispls);
+        Free(Atotal[k], "bla");
+        Free(Around[k], "bla");
+      }
+      Free(Uround, "bla");
+      Free(Utotal, "bla");
+      Free(c_all, "bla");
+      Free(s_all, "bla");
+      Free(c, "bla");
+      Free(s, "bla");
+      Free(rcounts, "bla");
+      Free(rdispls, "bla");
       
     } else {
@@ -920,6 +920,6 @@
       gsl_vector_free(eval);
       gsl_matrix_free(evec);
-      Free(c);
-      Free(s);
+      Free(c, "bla");
+      Free(s, "bla");
     }  
     
@@ -934,6 +934,6 @@
     }
   }
-  Free(top);
-  Free(bot);
+  Free(top, "bla");
+  Free(bot, "bla");
 
   if(P->Call.out[ReadOut]) fprintf(stderr,"(%i) STEP 6: Allocating buffer mem\n",P->Par.me);
@@ -1015,5 +1015,5 @@
   } 
   // and free allocated buffer memory
-  Free(coeffs_buffer);
+  Free(coeffs_buffer, "bla");
 
   if(P->Call.out[ReadOut]) fprintf(stderr,"(%i) STEP 7\n",P->Par.me);
@@ -1202,8 +1202,8 @@
     //debug(P,"done");
   
-    Free(marker);
+    Free(marker, "bla");
     for (l=0;l<Num;l++)
-      Free(group[l]);
-    Free(group);
+      Free(group[l], "bla");
+    Free(group, "bla");
     break;
    case 1:
@@ -1501,9 +1501,9 @@
   // free lookups
   for (k=0;k<NDIM;k++) {
-    Free(cos_lookup[k]);
-    Free(sin_lookup[k]);
-  }
-  Free(cos_lookup);
-  Free(sin_lookup);
+    Free(cos_lookup[k], "bla");
+    Free(sin_lookup[k], "bla");
+  }
+  Free(cos_lookup, "bla");
+  Free(sin_lookup, "bla");
 
   return (B_ij - spread);
