問題タブ [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.
r - R ffdfappend SIGBUS エラー
ffbase
andパッケージを使用する R スクリプトがありff
ます。Windows では、スクリプトは正常に実行されます。Linux (別のボックス、より高い RAM) では、バス (SIGBUS) エラーでクラッシュします。
Windows (バージョン 6.1.7601) セッション情報:
- R バージョン 3.1.0 (2014-04-10)
- プラットフォーム: x86_64-w64-mingw32/x64 (64 ビット)
- 付属パッケージ:ffbase_0.11.3 ff_2.2-13 bit_1.1-12
Linux (Linux xenja 3.5.0-54-generic #81~precise1-Ubuntu SMP Tue Jul 15 04:02:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux) セッション情報:
- R バージョン 3.1.1 (2014-07-10)
- プラットフォーム: x86_64-pc-linux-gnu (64 ビット)
- 付属パッケージ:ffbase_0.11.3 ff_2.2-13 bit_1.1-12
ff
R スクリプトがクラッシュするポイントは、さまざまなファイルの内容を繰り返し読み取り、関数を介してデータ フレームに連結するループ内にありますffdfappend
。ループは次のとおりです。
Linux で R スクリプトを実行すると、標準エラーで次のように記述されます (非常に長い行は意図的に@@@で切り捨てました) 。
R スクリプトを にアタッチするgdb
と、クラッシュの時点で次の関連メッセージが表示されます。
gdb バックトレース:
R スクリプトを実行するとstrace
、クラッシュの時点で次の関連情報が得られます。
続行する方法についてのアドバイスをいただければ幸いです。
どうぞよろしくお願いいたします。
-ジョージ。
c - ファイルの読み取り時に Bus Error:10 を特定できない
テキスト ファイルを読み取り、他の機能を実行する前にリンク リストに入れるプログラムを作成しています。このプログラムには、5 秒ごとに動作するスレッド関数も含まれていますが、起動時にクラッシュが発生しています。問題を引き起こしている関数のコードは次のとおりです。
c++ - C++ "バス エラー: 10" とポインターの操作
私はデータ構造の演習を行っていますが、昨日からバス エラーでブロックされています。これは、メモリで悪いことをしているためだと思います。しかし、私は正確に何を理解することはできません。
これらは、私が実践のために確立した要件です。
- 製品をリストに追加できる (どのような方法でも構いません)
- 現在の位置にあるリスト内の製品を取得できます (next、prev、moveToStart、moveToEnd... ここでは「実際」と呼ばれるカーソル ポインターがあります)
- 取得した製品に加えた変更は、データ構造で更新する必要があります (つまり、list::retrieve(*product)、product->visits++)。
これは私が持っているコードです。変数名についてお詫び申し上げます。スペイン語で行う必要があるため、名前はスペイン語です。
不要なコードを削除しました。これは私がそれを使用している方法です(そして惨めに失敗しています):
実行時に、最初に imprimir ("print") を実行したときに "Bus error: 10" だけが表示されます。挿入はエラーなしで機能します (ただし、何か問題がある可能性もあります)。
私の考えは、製品をノード内に保持し、それを返すときにその場所への参照を与えることです。これにより、変更もそこに反映されます(たとえば、取得した要素のビューまたは購入カウンターを増やし、読み取り時に変更を反映します)リストは後述)。
私がここでやっている間違いを誰かが指摘できれば、私は非常に感謝しています。
ありがとう!!
更新 これはコンパイル可能な例です。
c++ - リンク リストでのバス エラー (コア ダンプ)?
ユーザーが個人データベースのファイル名を入力して読み取ることができるようにするプログラムを作成しています。次にプログラムは、各状態リンク内に状態オブジェクトのリンク リストと人物オブジェクトのリンク リストを作成し、ファイルからの情報を整理します。
ファイル名を直接コーディングして、州のリストと各州の人々のリストを出力できたので、リンクされたリストの部分が機能することはわかっています。ただし、ユーザーがファイル名をコマンドとして入力できるようにしようとすると、バス エラーが発生します。gdb でコードを実行すると、次のように表示されます。
行番号すら出てこない!どんな助けでも大歓迎です。私のコードのコマンド部分と読み取り部分は次のとおりです。
c - 位置合わせされていないデータを新しい場所にコピーした後、Solaris バス エラーが発生しない
要するに、私のプログラムは、ネットワーク パケットを表す raw バイト (u_char) バッファを受け取ります。そのパケット内の情報を解析しようとしていますが、システム定義のヘッダー構造 (ether_header、ip、ip6、tcphdr、udphdr) を使用して解析しています。これを Linux と AIX の両方に実装して動作しましたが、Solaris でこれを実行すると、何らかの理由でバス エラーが発生し続けます。
私がデータを取得する方法は、基本的に、バッファの各部分を構造体の 1 つとしてキャストし、データを読み取ることです。たとえば、私が持っている場合
次に、必要な情報を次のように取得できます。
通常、Linux と AIX ではこれで問題なく動作します (特定の構造体はシステムによって名前が異なりますが、それは重要ではありません) が、Solaris でこれを実行しようとすると、iphdr->ip_v;
afterになるとバス エラーが発生し続けstruct ip *iphdr = (struct ip *) (buffer + sizeof(struct ether_header));
ます。調査の結果、これはアライメントされていないメモリにアクセスしようとしたことが原因であることがわかりました。イーサネット ヘッダーのサイズはわずか 14 バイトであるため、これは理にかなっています。そのため、IP ヘッダーは配列内でバイト アラインされていません。
これを回避しようとした方法は、関連する部分を別のバッファにコピーしてから読み取ろうとすることでした
これは機能しますが、理由がわかりません。memcpy が同じメモリ位置にアクセスしようとしているときにバス エラーをスローしないのはなぜですか? 私は思いついた解決策があまり好きではなく、状況をよりよく理解しようとしているので、何か他のことを考え出すことができます. パズルのピースが欠けているのでしょうか?
linux - 共有メモリへの書き込み時のバス エラー
Linux システムで POSIX 共有メモリを使用しようとしています。しかし、そこにデータをコピーしようとすると、バス エラーが発生します。コードは次のとおりです。
クラッシュする原因は何ですか?