什么会导致fwrite挂起?

时间:2010-09-10 17:41:09

标签: c solaris fwrite fclose

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

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

这似乎发生在solaris上。

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

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

这可能是什么问题?

1 个答案:

答案 0 :(得分:2)

看起来有些东西已经炸毁了。 FILE *上的操作通常使用内部锁来保证线程安全。您可能已经做了一些事情来调用某处未定义的行为。例如。你已经破坏了堆,覆盖了一些重要的东西(比如FILE),或者FILE *已经关闭了 - 在这种情况下,如果你继续使用它,就不能依赖任何理智的事情发生。