問題タブ [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.

0 投票する
3 に答える
1501 参照

c++ - segfault の原因が見つからない

編集:問題は解決しました。これは (また別の) 状況で、実際には問題があるように見える場所ではありませんでした。手がかりは、@0xfeeefefe をオブジェクトへのポインターとして使用することでした。これは、メモリを解放するときに Windows API 関数によって返されるアドレスです...操作されていたオブジェクトが削除されたことを示します。

std::map から値を消去しようとしているときにセグメンテーション違反が発生しましたが、その理由を一生理解できません。デバッガー (gdb) から次のように表示されます。

しかし、奇妙な部分は、これら 2 つの入力値の次の検査です。

背景: マップは、ポインターからポインターへのマッピングです。具体的には、キーは gui システムのウィンドウへのポインターであり、値はそのウィンドウに出力される情報を送信できるオブジェクトへのポインターです。デバッグ可能オブジェクトからウィンドウへの逆マップもあります。その理由は、ウィンドウが閉じている場合、デバッグ可能なオブジェクトに通知する必要があるためです。これにより、データを送信しようとして時間を無駄にすることができなくなります。逆マッピングは、マネージャー (このコードが含まれるクラス) がデバッグ可能なオブジェクトからパケットを受信したときに、どのウィンドウに情報を出力するかを認識できるようにするためのものです。

問題は、なぜ 2 つのポインター値を比較するとreturn( 0x025e1ef8 < 0x025e1ef8 )エラーが発生するのかということです。

私は自分のコードのある時点でのみ消去しようとしますが、それはループではないため、破損する反復子はありません。また、そのマップの別の場所に物を挿入するだけで、物が挿入されたり消去されたりするときにトレースが印刷されますが、それには何の問題もありません。

これが実際に役立つ情報ではないことはわかっていますが、コードが非常に大きく、問題を追跡するために何ができるかわかりません。提案があれば、さらに情報を提供したいと思います。何が起こっているのかを簡単に理解できるように、コードの一部を貼り付けます。私の問題が何であるかを示す何かがここにあることを願っています。

ここが問題の部分です

そして、これが要素がマップに追加される部分です

ご覧のとおり、何が起こっているのか、何がマップから消去されようとしているのかのアドレスを出力しています。それらは期待どおりに対応しているため、機能していない値などを消去しようとしているわけではありません。

あ、あと最後に一言。ここに奇妙な癖があります。ウィンドウを 1 つだけ開いた場合 (マップに要素を 1 つだけ追加した場合) は、問題なく消去できます。2 つ以上の要素をマップに追加した後でのみ、そのうちの 1 つを消去しようとするとセグメンテーション違反が発生します。

0 投票する
1 に答える
1465 参照

ruby - Rubyでセグメンテーション違反を「レスキュー」することは可能ですか?

1つの外部ライブラリを使用するRubyスクリプトがあります。このlibを使用し、再実行する必要がある場合、スクリプトがセグメンテーション違反で終了することがあります。プロセスを分離するための危険なコードなどを含むフラグメントを抽出することで、このエラーをなんとかして救済することは可能ですか?

ありがとう

0 投票する
7 に答える
1267 参照

c++ - C++ でのランダムなセグメンテーション違反

私は C++ を初めて使用し、どこから始めればよいかわかりません。そのため、コードが大量にあるため、コードをペーストビンにアップロードしました。

このコードは正常にコンパイルされ、gcc の -Wall オプションを使用しても警告は発せられません。

コマンドラインパラメータとして指定された数までのすべての素数を生成することになっています。

小さい数値 (4,000 や 5,000 など) では問題なく動作します。4,000,000 などのより大きな数では、ほぼ常に segfault でクラッシュします。その間の数字では、走るか走らないかで当たり外れがあります。

0 投票する
5 に答える
22771 参照

c - UNIXでユーザー入力を使用してCでexecvp()を使用しようとしています

ユーザーにコマンドを要求し、exec を使用してそのコマンドを実行するプログラムを作成しようとしています。

たとえば、「ls -la」と言われた場合、そのコマンドを実行する必要があります。私は次のコードを試しました:

ただし、次の実行を試みると、「セグメンテーション違反」が発生しました

何か案は?

0 投票する
1 に答える
394 参照

c++ - TokyoCabinet: hdb->close() でのセグメンテーション違反

TC ハッシュ データベースに約 800 万件のレコードを挿入した後、セグメンテーション エラーが発生しました。すべてが挿入された後、DB を閉じますが、コードのこの部分 (tchdb.c) でセグメンテーション違反をキャッチしました。

特にコメント行で。

DBは次のように開かれました:

DB は次のように調整されます。

.tch ファイルは約 2GB (2147483647 バイト) です。興味深いのは、約 800 万件のレコードを挿入した場合にのみ発生していることです。200 万または 300 万で、DB は問題なく終了します。テキスト ファイルからデータを読み取るため、800 万件のレコードを挿入するには約 3 時間かかります。

何か案は?

ありがとう

0 投票する
5 に答える
562 参照

c++ - C++ セグメンテーション違反の問題

プログラムでクラッシュが発生しましたが、それは問題ないように思えますが、もちろん、プログラムはそうではないと言っており、混乱しています。

私が現在取り組んでいる私の機能のこのスニペット:

問題かもしれません。問題をデバッグすると、デバッガーはスニペットの最初の行に移動します。

次に行こうとするとクラッシュします。デバッガーでは、このウィンドウがコード ブロックで開きます。

はいをクリックしましたが、それは私には恣意的に思えます。

私が間違ったことを誰か知っていますか?

バックトレースが必要な場合 (ウィンドウには Call Stack と表示されます)、後で必要に応じて編集します。

編集:これは機能全体であり、必要ではないと考えていました

辞書とフラグメントは、どちらもベクトルであるクラス「Language」で宣言されています。

0 投票する
2 に答える
4782 参照

c++ - SetJmp/LongJmp: これがセグメンテーション違反をスローするのはなぜですか?

次のコードは、私が現在抱えている問題をまとめたものです。現在の実行フローは次のとおりで、GCC 4.3 で実行しています。

上記の実行フローでは、b_helper に戻った直後に segfault が作成されます。あたかも b_helper スタック フレームのみが有効で、その下のスタックが消去されているかのようです。

なぜこれが起こっているのか誰でも説明できますか?未使用のスタック フレームなどを消去するのは GCC の最適化だと思います。

ありがとう。

0 投票する
3 に答える
4124 参照

c - gdb の解釈のヘルプ: 関数内の segfault

セグメンテーション違反をデバッグしようとしていますが、gdb から次の出力が得られます。

memcpy() の何かがおかしくなっているように見えます。しかし、その行は非常に多くの変数を参照しているため、正確に何が問題なのかわかりません。

誰かが0x8048af9 in parse_option_list...行が私に言っていることを理解するのを助けることができますか?

私の関数の署名は次のとおりです。

そして、これは役に立つかもしれません:

また、変数valueおよびnameは segfaulting ではありません (ただし、そう思われる場合は、それらの値を設定するコードを投稿できます)。ありがとうございました!

0 投票する
5 に答える
1099 参照

c - c-string への書き込み

コードのセグメンテーション違反が発生し、その理由がわかりません。

gdbデバッガーは、問題が6行目にあり、charをc-stringに格納したい場所にあることを教えてくれます(左辺値ポインターの逆参照を使用する場合、それは同じ問題です)。これは彼が言うことです:

私は K&R-C の本から学んでおり、これは 2.8 章 (削除機能) の単純化された例です。どこに問題があるのか​​ わかりません。

0 投票する
3 に答える
70567 参照

c - ユーザー入力をchar配列に入れる(Cプログラミング)

コンソールから入力を読み取り、それを文字の配列に入れる必要があります。次のコードを記述しましたが、次のエラーが発生します:「セグメンテーション違反」