程序运行到某一个*.meta文件时,提示
Client: read_file_meta: Assertion `file != ((void *)0)` failed.
Aborted.
于是排除bug:
- 单独open(*.meta)时没有问题,在上传大量文件时,会提示打开的文件为NULL;
- 在打开文件的函数里使用errno,得到errno value: 24, error信息: Too many open files,表明有很多打开的文件未关闭,导致打开23568.meta文件失败。
int main(void)
{
/*must set errno=0 before call errno*/
errno=0;
FILE *fp = fopen("23568.meta","r");
if(errno!=0)
{
printf("errno value: %d\n",errno);
printf("error information: %s\n",strerror(errno));
}
}
- 执行源代码,同时使用ps –us(或者top)查看进程的pid,再使用ll /proc/pid/fd