問題タブ [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 - UNIXでユーザー入力を使用してCでexecvp()を使用しようとしています
ユーザーにコマンドを要求し、exec を使用してそのコマンドを実行するプログラムを作成しようとしています。
たとえば、「ls -la」と言われた場合、そのコマンドを実行する必要があります。私は次のコードを試しました:
ただし、次の実行を試みると、「セグメンテーション違反」が発生しました
何か案は?
c++ - TokyoCabinet: hdb->close() でのセグメンテーション違反
TC ハッシュ データベースに約 800 万件のレコードを挿入した後、セグメンテーション エラーが発生しました。すべてが挿入された後、DB を閉じますが、コードのこの部分 (tchdb.c) でセグメンテーション違反をキャッチしました。
特にコメント行で。
DBは次のように開かれました:
DB は次のように調整されます。
.tch ファイルは約 2GB (2147483647 バイト) です。興味深いのは、約 800 万件のレコードを挿入した場合にのみ発生していることです。200 万または 300 万で、DB は問題なく終了します。テキスト ファイルからデータを読み取るため、800 万件のレコードを挿入するには約 3 時間かかります。
何か案は?
ありがとう
c++ - C++ セグメンテーション違反の問題
プログラムでクラッシュが発生しましたが、それは問題ないように思えますが、もちろん、プログラムはそうではないと言っており、混乱しています。
私が現在取り組んでいる私の機能のこのスニペット:
問題かもしれません。問題をデバッグすると、デバッガーはスニペットの最初の行に移動します。
次に行こうとするとクラッシュします。デバッガーでは、このウィンドウがコード ブロックで開きます。
はいをクリックしましたが、それは私には恣意的に思えます。
私が間違ったことを誰か知っていますか?
バックトレースが必要な場合 (ウィンドウには Call Stack と表示されます)、後で必要に応じて編集します。
編集:これは機能全体であり、必要ではないと考えていました
辞書とフラグメントは、どちらもベクトルであるクラス「Language」で宣言されています。
c++ - SetJmp/LongJmp: これがセグメンテーション違反をスローするのはなぜですか?
次のコードは、私が現在抱えている問題をまとめたものです。現在の実行フローは次のとおりで、GCC 4.3 で実行しています。
上記の実行フローでは、b_helper に戻った直後に segfault が作成されます。あたかも b_helper スタック フレームのみが有効で、その下のスタックが消去されているかのようです。
なぜこれが起こっているのか誰でも説明できますか?未使用のスタック フレームなどを消去するのは GCC の最適化だと思います。
ありがとう。
c - gdb の解釈のヘルプ: 関数内の segfault
セグメンテーション違反をデバッグしようとしていますが、gdb から次の出力が得られます。
memcpy() の何かがおかしくなっているように見えます。しかし、その行は非常に多くの変数を参照しているため、正確に何が問題なのかわかりません。
誰かが0x8048af9 in parse_option_list...
行が私に言っていることを理解するのを助けることができますか?
私の関数の署名は次のとおりです。
そして、これは役に立つかもしれません:
また、変数value
およびname
は segfaulting ではありません (ただし、そう思われる場合は、それらの値を設定するコードを投稿できます)。ありがとうございました!
c - c-string への書き込み
コードのセグメンテーション違反が発生し、その理由がわかりません。
gdbデバッガーは、問題が6行目にあり、charをc-stringに格納したい場所にあることを教えてくれます(左辺値ポインターの逆参照を使用する場合、それは同じ問題です)。これは彼が言うことです:
私は K&R-C の本から学んでおり、これは 2.8 章 (削除機能) の単純化された例です。どこに問題があるのか わかりません。
c - ユーザー入力をchar配列に入れる(Cプログラミング)
コンソールから入力を読み取り、それを文字の配列に入れる必要があります。次のコードを記述しましたが、次のエラーが発生します:「セグメンテーション違反」
linux - segfault命令ポインタアドレスを/var/ log / messagesから.mapファイルのアドレス/関数にマップするにはどうすればよいですか?
(私の環境は64ビットUbuntuで、私のアプリケーションはC ++でコンパイルされ、g ++でリンクされています。)
アプリケーションがゼロ除算のようなことをしたりasm("int $3")
、コードの左を実行したりすると、次のいずれかがsyslogを介して次のようにログに記録され/var/log/kern.log
ます/var/log/messages
。
.map
どちらの場合も、命令ポインタアドレスは、リンク時に作成されたファイルで簡単に検索できるものを指します( " -Wl,-Map,output.map
"を使用)。
しかし、セグメンテーション違反を引き起こした場合、この場合memcpy()
、ソースをNULLに設定してを呼び出すと、命令ポインターが範囲外になり、どのようにマップされるのかわかりません。
この例では、IPが0x445e70-0x445e7fの範囲にあると予想していました。これは、私の.mapファイルによるとmemcpy()の場所です。
私の質問:この場合のIPを解釈する秘訣は何ですか?
c++ - std :: string ::assign()はセグメンテーション違反を引き起こします
std::vector<uint8_t>
特定のオフセットに文字列を含むがあります。短縮されたダンプは次のとおりです。
std::string
オフセット136でデータを抽出し、それを:に入れようとしています。
ただし、これにより、アプリケーションがセグメンテーション違反になります。今、私はLinuxでのソフトウェア開発にかなり慣れていませんが、GDBでアプリを起動してバックトレースを取得する方法を知っており、ここで問題を追跡しました。
印刷vec.size()
すると200が返され、ベクトルをループしてデータを印刷しても問題は発生しません(クラッシュするスニペットの真上にあります!)。
私はg++4.3.4を使用してDebianでコンパイルしています。この問題が何である可能性があるかについてのポインタはありますか?
c - malloc() はどのように SIGSEGV を引き起こしますか?
プログラムに奇妙なバグがあります。malloc() が SIGSEGV を引き起こしているように見えますが、私の理解では意味がありません。動的リストには simclist というライブラリを使用しています。
後で参照する構造体を次に示します。
コードは次のとおりです。
list_init
プログラムが失敗する場所です。list_init のコードは次のとおりです。
行l->spareels = (struct list_entry_s **)malloc(SIMCLIST_MAX_SPARE_ELEMS *
は、スタック トレースによると、SIGSEGV が発生する場所です。デバッグに gdb/nemiver を使用していますが、途方に暮れています。この関数が最初に呼び出されたときは正常に機能しますが、2 回目は常に失敗します。malloc() はどのように SIGSEGV を引き起こしますか?
これはスタック トレースです。
どんな助けや洞察も大歓迎です!