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 に答える