問題タブ [bus-error]

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 投票する
4 に答える
353 参照

c - C - K&R 演習 2.4 - バス エラーが発生するのはなぜですか?

バス エラーが発生するのはなぜですか? 問題のある行はコード内にマークされています。

演習 2-4. 文字列 s2 の任意の文字に一致する s1 の各文字を削除する、squeeze(s1,s2) の代替バージョンを作成します。

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

c - 逆方向にアクセスすると、並べ替えられた二重リンク リストでバス エラーが発生する

私は一般的な二重リンクリストの実装を持っており、挿入に取り組んでいました。挿入後、リストの末尾から逆方向に反復しようとすると、バス エラーが発生します。コードをテストし、print ステートメントを散りばめたエラーを分離しようとします (最適なデバッグ手順ではありませんが、コードが何を行っているかを一目で確認するのに役立ちます)。問題がどこで発生するかを確認するために、挿入のたびに、リストの最後から 2 番目の要素の値を要求します。私は常に 5、2、10、80、4、1、7、8 の順序で要素を挿入し、リストに 4 を挿入した後、一貫してチョークします。プログラムの完全なコードは次のとおりです。

リストの定義は非常に基本的なものです。

関数定義は必要に応じて変更できます。safe_malloc は、コードを自分でテストする場合に置き換えることができる malloc のショートカット メソッドです。cmp_fptr は、単純な 'is a greater than b' メソッドへの関数ポインタです。

編集:更新行

プログラムが停止する原因です。デバッガーを使用しました。リストにアイテムを挿入すると、数回挿入した後、その行で停止します。以下は、現在使用しているテスト ハーネス コードです。

もう少しありますが、今のところテストしているのはそれだけです。

list->size のヒントをありがとう、もともと何を考えていたのかよくわかりません。

edit2: safe_malloc エラーの発見に感謝します。それが問題の原因だと思いましたが、それでも同じエラーが発生します。デバッガーは、4 が挿入された後に sigsegv (セグメンテーション違反) を返し、正気を保つために list->foot->prev->data (上記を参照) を要求する行に到達します。

最終編集: ノード データに十分なスペースを適切に malloc することで問題を解決しました。助けてくれた人に感謝します。私のコードには他にも問題がありますが、それは別の質問、および別のコード スニペットに関するものに最適です。

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

iphone - コンパイル時のXcodeバスエラー

私のiPhoneアプリは問題なくコンパイルされていましたが、突然、コンパイルに失敗し始め、次のエラーが発生しました。

LLVM GCC 4.2エラー内部コンパイルエラー:バスエラー10

シミュレーターでは問題なくコンパイルされますが、デバイスにはビルドされません。私はすべてのように見えるものを試しましたが、何も機能しません。投稿できるスタックトレースはありません。さらに、コードが長すぎてすべてをここに貼り付けることはできません。問題がどこにあるのか正確にわからないためです(ここでも、スタックトレースはありません)。

どうすればこれを絞り込むことができますか?

編集:以前にこれを試したことは知っていますが、コンパイラをLLVMではなくGCCに設定すると、GCCはアプリを正常にコンパイルしました。Xcodeがこのように動作している理由を知っていればよかったのですが、今のところ、これをチョークできるのはゴーストだけです。

0 投票する
4 に答える
880 参照

c++ - C++ および Linux でのバス エラー/セグメント フォールトの追跡に関する問題

ローカル ネットワーク上の UDP パケットでブロードキャストされる神経スパイク データを処理するプログラムがあります。

私の現在のプログラムには、UI スレッドとワーカー スレッドの 2 つのスレッドがあります。ワーカー スレッドは単にデータ パケットをリッスンして解析し、UI スレッドで表示および処理できるようにします。私の現在の実装は問題なく動作します。しかし、さまざまな理由から、オブジェクト指向アプローチを使用して C++ でプログラムを書き直そうとしています。

現在の作業プログラムは、2 番目のスレッドを次のように初期化しました。

getNetSpike新しいスレッドによって呼び出される関数は次のとおりです。

プログラムの新しい OO バージョンでは、ほぼ同じ方法で 2 番目のスレッドをセットアップします。

ただし、pthead_createオブジェクトのメンバーメソッドへのポインターではなく、void 関数へのポインターを取るため、SpikePlot.getNetworSpikePacket()メソッドをラップするこの単純な関数を作成する必要がありました

次に、getNetworkSpikePacket()メソッドを呼び出します。

2 つの実装のコードはほぼ同じですが、2 番目の実装 (OO バージョン) は、最初のパケットが読み取られた後に SegFault または BusError でクラッシュします。を使用printfして、エラーの原因となっている行を絞り込みました。

私の人生では、なぜそれが私のプログラムをクラッシュさせるのか分かりません。

ここで何が間違っていますか?

更新spikeBuff:クラスのプライベートメンバーとして定義します:

次に、SpikePlot コンストラクターで次のように呼び出します。

そして設定:

更新 2 : わかりました、インデックス変数で本当に奇妙なことが起こっています。彼らの正気をテストするために、私は次のように変更getNetworkSpikePacketしました:

そして、コンソールに次の出力が表示されます。

このメソッドは、値を更新する唯一のメソッドです (値を 0 に設定するコンストラクターを除く)。これらの変数のその他の用途はすべて読み取り専用です。

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

c++ - MPI_Finalize でのバス エラー

並列計算クラス用の MPI プログラムを作成しています。コードが機能し、正しい結果が出力されましたが、複数のプロセスで MPI_Finalize を呼び出そうとすると、Buss エラーが発生します。Eclipse の PTP 環境を介して OS X でこれを実行しています。エラーは次のとおりです。

これが私のコードの主な機能です。ここにはいくつかの悪いC++プラクティスがあると確信しています(私は何年も使用しておらず、独学です)が、正しい値を出力します。ファイルの残りの部分を投稿する必要がある場合は、それを行うことができます。明らかな問題がある場合、これを大きな質問にしたくありませんでした。

編集: doIteration 関数のどこかに問題を絞り込みました。その関数が呼び出されたときにのみエラーが発生し、複数のプロセスが実行されている場合にのみ発生します。これが私の doIteration 関数です。行列の端にない行列の各値を、それ自体とその 4 つの近傍の最大値に置き換えることになっています。値は、更新全体が完了すると更新されるはずです (したがって、配列 temp が使用されます)。

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

python - web.twisted で不可解な「バス エラー」が発生する (あるサーバーではコードが機能し、別のサーバーでは機能しない)

私は、いくつかのデータベースの要素を1つずつ表示しようとしています:

1 つのシステム (Linux hh 3.0.0-16-generic-pae #28-Ubuntu SMP Fri Jan 27 19:24:01 UTC 2012 i686 i686 i386 GNU/Linux) では、すべて正常に動作します。他のシステム (Linux localhost 2.6.38-8-server #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux)

私は以下を得ました:

私が考える2つのサーバーの唯一の違いは(x32 / x64の形式は別として)、2番目のサーバーに同様のねじれたプロセスがあることです。このプロセスは重要なことを行っており、テストコードが機能するかどうかを確認するためだけに、終了したり、他の方法で干渉したりしたくありません。

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

c - LinuxでのTCPバスエラー

クライアントサーバーアプリケーションがあり、tcpソケットを使用しています。クライアント側からのsend()リクエストで、常にバスエラーが発生し、プログラムが終了します。今、私は少しウィキペディアを検索しました、そして記事はバスエラーを(存在しない物理アドレス、整列されていないメモリアクセス、そして切り捨てられたマップされたファイルへのアクセス)に帰します。私が送信している構造は、3つのintとenumインスタンスだけなので、配置が問題になるとは思いません。関連するコードスニペットは次のとおりです。

メインで:

そしてサーバー側では:

前もって感謝します。

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

c - SolarixUnixBoxで実行している場合にのみバスエラー

コンパイルして、私のLinuxボックス(Ubuntu)とx86とx64の両方の他のLinuxボックスで実行しますが、SunOS Generic_142900-02 sun4u sparc unixボックスでは、回線でクラッシュします

バスエラーが発生しました。また、GCC -Gでコンパイルすると、GDBはデバッグシンボルを見つけることができません。

コードは次のとおりです。

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

c++ - バス エラー:10、さらにインデックスを追加する必要があります

それぞれが 256 要素を保持する 6 つの int 配列を使用しています。かなり標準的だと思います。

私が直面している問題は、これらすべての配列を 0 でいっぱいになるように初期化しているときに、Bus Error:10 が発生することです。私のループの240回目の反復のたびに。

これが私のヘッダーファイルです...

そして、これが問題が発生している機能です...

コードのこの部分に到達するたびに、プログラムは i=240 でクラッシュします。申し訳ありませんが、もう少し詳しく説明すると、次のdashB[i] = 0;行で発生します

それは私を際限なく悩ませています、私は自分の配列の範囲外に出ているところを見ることができません、そして私は動的記憶の観点から私の理解をはるかに超えた力をいじっていません.

どんな助けでも役に立ちます。

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

c - 構造体の 2 次元配列に malloc を使用するにはどうすればよいですか? (バスエラー: 10)

数独ソルバーを実装しようとしています。これを行うには、以下に示す構造体を使用して、数独ボードのセルを表します。次に、これらの構造体の 9x9 配列を宣言して、ボードを表します。

セル構造:

次に、structs の配列を次のように宣言します。

私の問題は、配列に値を入力しようとすると (つまり、board[2][2].value = getchar();)、うまくいくこともあれば、次のエラーが発生することもあります。

これが何を意味するのかよくわかりません... "Bus error: 10" はセグメンテーション違反とどう違うのですか?

私はgccを使用していて、vimで編集しています。私の気持ちは、この配列にメモリを動的に割り当てる必要があるということです。これで、malloc を使用して 2 次元配列にメモリを割り当てる方法がわかりました。次のようになります。

しかし、構造体の 2 次元配列のメモリ割り当て部分を実装するのに問題があります。

こんなものだろうか。

この「 sizeof(struct cell) 」が、本来あるべきメモリ量を適切に割り当てていないことに注意しています。

どんな助けでも大歓迎です!私は C にかなり慣れていません (C++ は私の母国語です)。組み込み C をかなり使用しましたが、言語全体をよりよく理解しようとしています。
詳細\詳細な説明のボーナス ポイント!

ありがとう!

編集 OK、素晴らしい提案をしてくれたみんなに感謝します。私はまだ動的メモリ割り当てを実装していませんが、要求に応じて、バスエラーを生成しているコードは次のとおりです。

ご覧のとおり、getchar() の戻り値の型と一致するように、値のデータ型を int に変更しました。しかし、私のコードは依然として奇妙な実行時エラー/結果を生成しています。たとえば、setup_board の while ループの最初の反復で、Row:1、Col:1、Value:5 と入力できます。その後、'n' を入力して終了すると、ボードの上部に 5 が印刷されます。ただし、これは当てはまりません。出力される行列は、initialize_board() が呼び出された後もその状態のままです。

出力:

また、他のマトリックス座標を入力すると、バスエラーが発生します: 出力:

その醜い double getchar() ビジネスをクリーンアップする方法についてのアドバイスもいただければ幸いです。
みんな、ありがとう!

EDIT NUMBER 2 問題は、これらの getchar() にありました.... 実際の数値そのものではなく、数値を表す整数の ASCII コードを返すことに気づきませんでした。これを修正するために私が行ったことは次のとおりです。

皆さんのご協力とご意見に感謝します。皆さんが行った提案の多くを実装し、この質問から多くのことを学びました!

編集番号 3

最後に 1 つの質問です。

私の最初の問題は解決されましたが、メモリを動的に割り当てることによってマトリックスを実装する方が良いかどうかについて、強い意見や推論を持っている人はいますか?

動作するのでそのままにしておきますが、マトリックスがかなり大きいので、動的に割り当てる方がプログラミングの練習に適しているでしょうか?