2011-01-19 8 views
0

私のアプリケーションは32ビットアーキテクチャではなく64ビットアーチで完全に動作します。私はsegmentation faultを得た。私は原因がpthread_kill()呼び出しの実行だと思います。それは可能か、私の想定は間違っていますか?64ビットアーキテクチャでのCの問題:pthread_kill()

+2

これはあなたのちょうど野生の推測です。プログラムを別のプロセッサー・アーキテクチャーに移植する場合、あらゆる種類の事態が起こる可能性があります。デバッガでプログラムを実行し、segfaultの元の場所を探します。 –

答えて

0

使用しているオペレーティングシステムとglibcは何ですか?

pthread(Linuxの最近のGNU glibcなど)のメインストリーム実装を使用している場合、私は彼らが壊れていないと確信しています。

あなたのクラッシュは、あなたのコードに問題がある可能性が高いと思われます。あるいは、32ビットと64ビットのバイナリコードが正しく混合されていない可能性があります。

可能な限り小さなコード行でクラッシュを再現してここに貼り付けることができますか?

+0

私はDebian GNU/Linux 2.6.26-2-686カーネルバージョンと2.7 glibcバージョンです。 – Luigi

+0

segフォールトを再現するにはあまりにも多くのコードを貼り付ける必要があります。 – Luigi

+0

Linux上の同じユーザーレベルアプリケーションで32ビットと64ビットのコードを「ミックス」することは物理的に不可能です。 –

0

セグメンテーションフォールトはほぼ確実ではありませんないpthread_kill()の結果が、アプリケーションでは、昔ながらのバグが(多くのバグは、64ビットのコンパイル、または唯一の特定のメモリレイアウトのみに表示され、何も特別なことについてあなたここでの特定のアプリケーション)。

代わりの原因かもしれないがGDBValgrindの下でアプリケーションを実行する、ことを推測します。両方とも、あなたのバグがどこにあるかを痛感しやすくするでしょう。

関連する問題