(這是在ffmpeg-devel列表中提出的,但是計算方式偏離主題,所以在此張貼)。由於fopen()導致的C分段錯誤。如何追蹤和尋找什麼?
ffmpeg.c加載多個.c,它們使用log.c的av_log - > av_log_default_callback函數,它使用fputs;
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
屏幕輸出:
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
每一次,當的fopen投入代碼,它給出的不明原因的分段錯誤。爲什麼這種事情可能發生在這裏?也許是由於阻止了主I/O?
什麼是在這種情況下應該調查的一般「阻滯劑」? Pthreads(涉及代碼的地方)?
你是不是想在'fopen'調用中使用雙引號而不是單引號?這段代碼是否編譯? – jamesdlin 2010-09-11 01:12:37