xmlDocPtr plante mon appli

utilisation de xmlDocPtr fait plante mon appli

je verifi l’existance d’un fichier dans un dossier, ce fichier porte le meme nom que le dossier avec une extension .log, le fichier et au format xml
apres avoir verifier si le fichier existe ou pas, soit je le crée et enregistre des infos, soit il existe deja est je recupere des infos

voici plus de détaille sur le code mise en cause, je n’ai toujours pas trouver la source du probleme

 
	/* verifier la presence d'un fichier Log */
	/* le nom du fichier rechercher est egal au nom de dossier avec extension .log */
	gchar *NDT;
	NDT = g_path_get_basename(V_Entry1);// extraire le nom du dossier sur le chemin selectionner
	char *V_slach; V_slach = "/";
	char *V_log; V_log =".log";
	const gchar *FChemin;
	FChemin = g_strconcat(V_Entry1, V_slach, NDT, V_log, NULL);//concatener chemin+nom fichier
	FILE *fp = NULL;
	fp = fopen(FChemin,"rb");
	if (fp == NULL)
	{
		/* le fichier log n'existe pas */ 
			/* création du fichier log */
			FILE *CFLog = NULL; // Creation_Fichier_Log
			CFLog = fopen(FChemin,"w");
			fprintf(CFLog,"<?xml version='1.0' encoding='UTF-8'?>\n");	
			char *V_TagD; V_TagD = "<";
			char *V_TagF; V_TagF = ">";
			char *V_TagRacine = "racinetxt";
			char *V_TagT;
			V_TagT = g_strconcat(V_TagD, V_TagRacine, V_TagF, NULL);
			fprintf(CFLog,"\t");		fprintf(CFLog,V_TagT);			fprintf(CFLog,"\n");
			V_TagT = g_strconcat(V_TagD, V_slach, V_TagRacine, V_TagF, NULL);
			fprintf(CFLog,"\t");		fprintf(CFLog,V_TagT);			fprintf(CFLog,"\n");
			fclose(CFLog);
			xmlDocPtr doc;
			xmlNodePtr racine, New_Noeud;
			doc = xmlParseFile(FChemin);
			racine = xmlDocGetRootElement(doc);
			/* Parametre - Chemin_Dossier_a_Traiter = V_Entry1 */
			New_Noeud =	xmlNewNode(NULL,"Parametre");
			xmlSetProp(New_Noeud,"Chemin_Dossier_a_Traiter",V_Entry1);
			/* Parametre - Numeration_Page = V_ComboBox2 */
			xmlSetProp(New_Noeud,"Numeration_Page",V_ComboBox2);
			char VVBox2[2];
			sprintf(VVBox2,"%d",CBox2); //converti un "int" en "char" 
			xmlSetProp(New_Noeud,"N_Numeration_Page",VVBox2);
			xmlAddChild(racine,New_Noeud);
			DIR * dirdossier;
			dirdossier = opendir(V_Entry1);
			if (dirdossier != NULL)
			{
				int ComptFichier = 0;
				struct dirent *nomfichier;
				while ((nomfichier = readdir(dirdossier)) != NULL)
				{
					char *extens;
					char *reffext = "txt";
					extens = strstr(nomfichier->d_name, "txt");
					if (extens != NULL)
					{
						if (strcmp(extens, reffext) == 0)
						{
							/* Nom_Fichiers */
							New_Noeud =	xmlNewNode(NULL,"Fichier");
							xmlSetProp(New_Noeud,"Nom_Fichier",nomfichier->d_name);
							xmlAddChild(racine,New_Noeud);
							ComptFichier++;
						}
					}
				}//sortie while
				/* CountFichier - Nombre_de_Fichier_a_Traiter = X */
				New_Noeud =	xmlNewNode(NULL,"CountFichier");
				char *V_CountFichier;
				sprintf(V_CountFichier,"%d",ComptFichier); //converti un "int" en "char" 
				xmlSetProp(New_Noeud,"Nombre_de_Fichier_a_Traiter",V_CountFichier);
				xmlAddChild(racine,New_Noeud);
			}
			closedir(dirdossier);
			xmlSaveFile(FChemin,doc);
			xmlFreeDoc(doc);
			VBuff = "- Fichier Log Crée \n";
			gtk_text_buffer_get_start_iter(text_buffer,&IterStart);
			gtk_text_buffer_insert(text_buffer,&IterStart,VBuff,-1);
 
	/* Creation du Dossier Post Traitement */
			FChemin = g_strconcat(V_Entry1, V_slach, "BINAIRE", NULL);//concatener chemin+binaire
			if(-1 == mkdir(FChemin,S_IRWXU))
			{
				VBuff = "- Création du repertoire BINAIRE échoué \n";
				gtk_text_buffer_get_start_iter(text_buffer,&IterStart);
				gtk_text_buffer_insert(text_buffer,&IterStart,VBuff,-1);
			}
			else
			{
				VBuff = "- Répertoire BINAIRE Crée \n";
				gtk_text_buffer_get_start_iter(text_buffer,&IterStart);
				gtk_text_buffer_insert(text_buffer,&IterStart,VBuff,-1);
			}
	}
	else
	{
		fclose(fp);
		/* extraire une donnée du fichier Log   */
		xmlDocPtr mog;
		xmlNodePtr racinemog;
		xmlXPathContextPtr contextmog;
		xmlXPathObjectPtr objmog;
		mog = xmlParseFile(FChemin);
		racinemog = xmlDocGetRootElement(mog);
		contextmog = xmlXPathNewContext(mog);
		int i;
			objmog = xmlXPathEvalExpression("/racinetxt/Parametre[@type='Chemin_Dossier_a_Traiter']/text()",contextmog);
			for(i=0;i<objmog->nodesetval->nodeNr;i++)
			{
				xmlNodePtr n = objmog->nodesetval->nodeTab[i];
				V_Entry1 = n->content;
			}
		xmlXPathFreeObject (objmog);
		xmlXPathFreeContext (contextmog);
		xmlFreeDoc(mog);
	}	

merci d’avance pour vos suggestions permettant de corriger ou ameliore mon code et mes connaissance du langage C