問題タブ [segmentation-fault]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Gtkmm textBuffer->insert 呼び出し時のセグメンテーション違反
C ++のgtkmmについて学んでいます。新しいテキスト行を追加するための単純な TextBuffer を取得するのに問題があります。TextViewer (メッセージと呼ばれる) と TextBuffer (textBuffer と呼ばれる) を含む HBox である OutputBox というクラスがあります。
以下は、OutputBox クラスの小さなチャンクです。
文字列を addText に渡すと、新しい文字列がバッファに追加されることを期待していますが、代わりに seg fault が発生します。
gdb を介して実行した後、エラーが gtkmm ライブラリから発生していることがわかります。
これが何を言っているのかもよくわかりません。クラスを間違って使用していると思います。
c - Linux mmap() エラー
バッファの内容を解析したいメモリマップファイルがあります。mmap() は成功を返し、fprintf を使用してバッファーの内容をファイルに正常に出力できます。ただし、プログラムでバッファを配列として直接アクセスしようとすると、セグメンテーション違反が発生します。なぜこうなった?コードは次のとおりです。
perl - Perl でセグメンテーション違反をデバッグするための良い方法や手順は何ですか?
コードがセグメンテーション違反を引き起こさない 2 つのケースがあります。
- 少なくとも 1 つの場所でSmart::Commentsを使用する場合
- デバッガーを実行します。
私はそれをこの呼び出しまで追跡しました:
whereeach_pair
は別のモジュールで次のように定義されています。
- each_pair をList::MoreUtils::natatimeに置き換えるだけでよいことがわかりました(ただし、これにはいくつかのバグがあると聞きました)。彼らは最近、このモジュールを私たちの環境に許可しました。セグメンテーション違反 -- またはデバッグ セグメンテーション違反による他の Perl プログラマー。
私はこれで少し時間を失いました。
編集
私はこの関数を使用する他のモジュールを持っています.andを使用できると期待する人$a
も$b
います.また、同じモジュール内の別の場所で別のリストのために機能しています. この呼び出しを変更することも、このファイルに対して変更することもできますが、それを正常に使用するすべての場所で変更することは、おそらく、この遅い時間に許可されているよりも多くの変更です。
c++ - 共有ライブラリを使用したセグメンテーション違反
cpp / hファイルが関連付けられた共有ライブラリ(つまりlibXXX.so)があります。これらには、いくつかの関数ポインタ(.so関数エントリポイントを指す)と、このクラスのメソッドとしてこの関数をラップするクラスが含まれています。
すなわち:.hファイル:
.cppファイル
次に、次の呼び出しを行う別の共有ライブラリ(自分で作成)があります。
セグメンテーション違反が発生します。セグメンテーション違反はで発生するようです
しかし、奇妙な振る舞いで:私が到達すると
okUsbFrontPanel_Construct()への再帰を取得します。
誰かが何か考えを持っていますか?
編集:これは、gdbを使用した実行によって取得されたバックトレースです。
など...私見私はある種のスタックオーバーフローのためにセグメンテーション違反を起こします。再帰呼び出しが多すぎて、問題が発生します。
ちなみに、私はScientific Linux 4ディストリビューション(RH4ベース)を使用しています。
EDIT2:
関数okUsbFrontPanel_Construct出力のlibokFrontPanel.soのobjdump:
933eで、実際に<_ZN16okCUsbFrontPanelC1Ev @ plt>への呼び出しがあります。この呼び出しは、私の.cpp内の呼び出しと混同されますか?
c - determining segmentation fault occurring in loop?
On running the following script, I get segmentation fault. The output consists of "here 5a". But nothing beyond it. Any suggestions on what might be going wrong?
UPDATE
c - なぜfcloseでセグメンテーション違反が発生するのですか?
私は明らかに何かが欠けています。なぜこれが起こるのか誰かが説明してもらえますか?
c++ - コンパイル後に静的な初期化順序を決定しますか?
C++ では、コンパイラーが任意の順序で静的オブジェクトを初期化することを選択できる (いくつかの制約がある) こと、および一般に、静的な初期化順序を選択または決定することはできないことを私は知っています。
ただし、プログラムがコンパイルされると、コンパイラはこれらのオブジェクトを初期化する順序を決定する必要があります。デバッグシンボルを使用してコンパイルされたプログラムから、静的コンストラクターが呼び出される順序を決定する方法はありますか?
コンテキストは次のとおりです。新しいツールチェーンでビルドすると、main() の前に突然 segfault になる大きなプログラムがあります。これは静的な初期化順序の問題であるか、ロードしているライブラリの 1 つに問題があります。ただし、gdb を使用してデバッグすると、クラッシュの場所はシンボリック情報やバックトレースなしで生のアドレスとして単純に報告されます。最初の静的に初期化されたオブジェクトのコンストラクターにブレークポイントを配置することにより、これら2つの問題のどちらであるかを判断したいと思いますが、どのオブジェクトであるかを判断する方法がわかりません。
c++ - segfault の原因が見つからない
編集:問題は解決しました。これは (また別の) 状況で、実際には問題があるように見える場所ではありませんでした。手がかりは、@0xfeeefefe をオブジェクトへのポインターとして使用することでした。これは、メモリを解放するときに Windows API 関数によって返されるアドレスです...操作されていたオブジェクトが削除されたことを示します。
std::map から値を消去しようとしているときにセグメンテーション違反が発生しましたが、その理由を一生理解できません。デバッガー (gdb) から次のように表示されます。
しかし、奇妙な部分は、これら 2 つの入力値の次の検査です。
背景: マップは、ポインターからポインターへのマッピングです。具体的には、キーは gui システムのウィンドウへのポインターであり、値はそのウィンドウに出力される情報を送信できるオブジェクトへのポインターです。デバッグ可能オブジェクトからウィンドウへの逆マップもあります。その理由は、ウィンドウが閉じている場合、デバッグ可能なオブジェクトに通知する必要があるためです。これにより、データを送信しようとして時間を無駄にすることができなくなります。逆マッピングは、マネージャー (このコードが含まれるクラス) がデバッグ可能なオブジェクトからパケットを受信したときに、どのウィンドウに情報を出力するかを認識できるようにするためのものです。
問題は、なぜ 2 つのポインター値を比較するとreturn( 0x025e1ef8 < 0x025e1ef8 )
エラーが発生するのかということです。
私は自分のコードのある時点でのみ消去しようとしますが、それはループではないため、破損する反復子はありません。また、そのマップの別の場所に物を挿入するだけで、物が挿入されたり消去されたりするときにトレースが印刷されますが、それには何の問題もありません。
これが実際に役立つ情報ではないことはわかっていますが、コードが非常に大きく、問題を追跡するために何ができるかわかりません。提案があれば、さらに情報を提供したいと思います。何が起こっているのかを簡単に理解できるように、コードの一部を貼り付けます。私の問題が何であるかを示す何かがここにあることを願っています。
ここが問題の部分です
そして、これが要素がマップに追加される部分です
ご覧のとおり、何が起こっているのか、何がマップから消去されようとしているのかのアドレスを出力しています。それらは期待どおりに対応しているため、機能していない値などを消去しようとしているわけではありません。
あ、あと最後に一言。ここに奇妙な癖があります。ウィンドウを 1 つだけ開いた場合 (マップに要素を 1 つだけ追加した場合) は、問題なく消去できます。2 つ以上の要素をマップに追加した後でのみ、そのうちの 1 つを消去しようとするとセグメンテーション違反が発生します。
ruby - Rubyでセグメンテーション違反を「レスキュー」することは可能ですか?
1つの外部ライブラリを使用するRubyスクリプトがあります。このlibを使用し、再実行する必要がある場合、スクリプトがセグメンテーション違反で終了することがあります。プロセスを分離するための危険なコードなどを含むフラグメントを抽出することで、このエラーをなんとかして救済することは可能ですか?
ありがとう
c++ - C++ でのランダムなセグメンテーション違反
私は C++ を初めて使用し、どこから始めればよいかわかりません。そのため、コードが大量にあるため、コードをペーストビンにアップロードしました。
このコードは正常にコンパイルされ、gcc の -Wall オプションを使用しても警告は発せられません。
コマンドラインパラメータとして指定された数までのすべての素数を生成することになっています。
小さい数値 (4,000 や 5,000 など) では問題なく動作します。4,000,000 などのより大きな数では、ほぼ常に segfault でクラッシュします。その間の数字では、走るか走らないかで当たり外れがあります。