1

我的代码使用以下堆栈挂起 fwrite:

libc.so.6.1::___lll_lock_wait
libc.so.6.1::fwrite

这似乎发生在 solaris 中。

我能想到的唯一不正确的事情是我的代码可能会尝试在用于执行 fwrite 的同一个 FILE 指针上执行并行 fclose。如果发生并行 fclose 会导致这种堆栈吗?

但是,我不确定并行 fclose 调用是否真的发生了?

这里可能是什么问题?

4

1 回答 1

2

好像有什么东西在什么地方爆炸了。FILE* 上的操作通常使用内部锁来保证线程安全。您可能已经做了一些事情来在某处调用未定义的行为。例如,您已经破坏了堆,覆盖了一些重要的东西(如 FILE),或者 FILE* 已关闭 - 在这种情况下,如果您继续使用它,您将无法依赖任何正常的事情发生。

于 2010-09-10T17:48:14.117 回答