【发布时间】:2017-03-17 22:59:09
【问题描述】:
如果文件在 fopen() 和 fgets() 之间被覆盖,会发生什么?我有一个程序因以下堆栈跟踪而失败:
0x00007f9d63629850 (Linux)
0x00007f9d6253e8ab (/lib64/libc-2.11.3.so) __memchr
0x00007f9d62523996 (/lib64/libc-2.11.3.so) _IO_getline_info_internal
0x00007f9d6252d0cd (/lib64/libc-2.11.3.so) __GI_fgets_unlocked
我有理由相信正在读取的文件可能会在 fopen() 和 fgets() 之间被覆盖。这有多合理?
我们使用带有 glibc 2.11.3 的 SUSE 11.4,所有更新和补丁都应用于 glibc。
【问题讨论】:
-
什么被覆盖了?
FILE *对象,还是磁盘上的文件? -
我认为是磁盘上的文件。