Bonjour,
Je cherche à résoudre une erreur parmis tant d'autres, évaluées par Dr Memory.
Cette erreur ce repète plusieurs fois :
Voici la fonction et la ligne concernée par l'erreur susnommée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Error #4: UNINITIALIZED READ: reading register eax # 0 UMEngx86.dll!? +0x0 (0x5b934266 <UMEngx86.dll+0x4266>) # 1 KERNELBASE.dll!CreateMutexExW +0x64 (0x77410f6f <KERNELBASE.dll+0x10f6f>) # 2 KERNELBASE.dll!DebugBreak +0x20d (0x77413438 <KERNELBASE.dll+0x13438>) # 3 KERNELBASE.dll!OutputDebugStringA +0xb1 (0x7741354d <KERNELBASE.dll+0x1354d>) # 4 msvcrt.dll!_invoke_watson # 5 msvcrt.dll!fprintf # 6 file_open [C:/Users/xxxx/Desktop/Code source/file.c:107] # 7 __mingw_CRTStartup # 8 ntdll.dll!RtlInitializeExceptionChain +0x62 (0x77e69882 <ntdll.dll+0x39882>) # 9 ntdll.dll!RtlInitializeExceptionChain +0x35 (0x77e69855 <ntdll.dll+0x39855>) Note: @0:00:05.318 in thread 8244 Note: instruction: movzx 0x04(%eax) -> %ecx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 FILE *file_open(const char *path, const char *rights) { FILE *pFile = NULL; if( path && rights ) { errno=0; if ( ( !(pFile=fopen(path,rights))) ) fprintf(logger,"\nfile.h::file_open --> The openning of the \"%s\" file has failed with rights \"%s\" [ERRNO:%s]", path, rights, strerror(errno)); } else fprintf(logger,"\nfile.h::file_open --> At least, one of both arguments is NULL"); return pFile; }
Voici la bibliotheque de fonction pour logger, logger.h puis logger.c
logger est un FILE* déclaré en variable globale.
Je note que cette erreur est sytématique, toutes mes fonctions qui vont utiliser la variable logger dans un fprintf me génère l'erreur plus haut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #ifndef LOGGER_H #define LOGGER_H FILE *logger; void logger_on(); void logger_off(); void logger_read(); # endifVoici le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 #include <stdlib.h> #include <string.h> #include <dirent.h> #include "file.h" #include "ptrop.h" #include "str.h" #include "tim.h" #include "logger.h" void logger_on() { remove("logger.txt"); logger = NULL; logger = fopen("logger.txt","w"); } void logger_off() { if(logger) fclose(logger), logger = NULL; } void logger_read() { char *log = NULL; if ( (log=file_to_string("logger.txt")) ) if ( strcmp(log, "") != 0 ) { printf("\n\n±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"); printf("\n±± LOG FILE ±±"); printf("\n±±±±±±±±±±±±±±±±±±±±±±±±±±±±±\n"); unsigned long long int i; for (i=0;i<str_length(log);i++) { printf("%c",log[i]); if(log[i]=='\n') time_wait(0.25); } free(log); printf("\n±±±±±±±±±±±±±±±±±±±±±±±±±±±±±\n"); } else remove(".\\logger.txt"); }
S'il vous faut plus d'informations, merci de me les demander.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 int main(int argc, char *argv[], char* env[]) { logger_on(); binw_set_sz(); t_uint64 sz = 0; t_binw *binw = NULL; if ( (binw=str_to_bin("test", &sz)) ) binw_display_dyn(binw, sz, "test"), binw_destroy(binw); logger_off(); logger_read(); return 0; }
Si vous souhaitez le code source entier, je peux vous le faire parvenir.
Merci d'avance pour votre aide.
J'avoue que mes connaissances sont trop limitées pour comprendre ce qui ne va pas.
Partager