(ceci a été demandé sur la liste de ffmpeg-devel, mais compté de façon hors-sujet, en l'affichant ici). Ffmpeg.c charge plusieurs fichiers .c, qui utilisent la fonction av_log -> av_log_default_callback de log.c, qui utilise fputs;Erreurs de segmentation C dues à fopen(). Comment tracer et quoi chercher?
void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl)
{
...
snprintf(line, sizeof(line), "[%s @ %p] ", (*parent)->item_name(parent), parent);
... call to colored_fputs
sortie de l'écran:
static void colored_fputs(int level, const char *str){
...
fputs(str, stderr);
// this causes sigsegv just by fopen()
FILE * xFile;
xFile = fopen('yarr', 'w');
//fputs(str, xFile);fclose(xFile); // compile me. BOOM!
av_free(xFile); // last idea that came, using local free() version to avoid re-creatio
Chaque fois, quand fopen est mis en code, il donne une erreur de segmentation de la raison inconnue. Pourquoi ce genre de chose peut-il arriver ici? Peut-être en raison du blocage des E/S principales? Quels sont les «bloqueurs» généraux qui devraient être étudiés dans une telle situation? Pthreads (impliqué dans le code quelque part)?
Vouliez-vous utiliser des guillemets au lieu de guillemets simples dans l'appel 'fopen'? Ce code a-t-il été compilé? – jamesdlin