問題タブ [overrun]
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# - デプロイされた(.exe)バージョンでは、バッファオーバーランでC#アプリケーションがクラッシュしますが、VisualStudioではクラッシュしません
Visual Studio内から完全に実行されるac#Windowsフォームアプリケーションがありますが、.exeから展開して実行するとクラッシュします。バッファオーバーランエラーでクラッシュします...そして、このエラーが私のコード内からスローされていないことは明らかです。代わりに、ウィンドウはある種のバッファオーバーランを検出し、外部からアプリケーションをシャットダウンしている必要があります。それを引き起こしている特定のコード行はないと思います。それは単に断続的に発生します。
バッファオーバーランエラーの考えられる原因と、Visual Studioで実行した場合ではなく、展開されたアプリケーションでのみ発生する理由について、誰かが考えていますか?
よろしくお願いします、ベン
windows - スタックバッファオーバーラン(Windows、C ++):原因を検出するにはどうすればよいですか?
犯人を突き止めるのに役立つツール/ライブラリはWindowsにありますか?これはかなり大きなコードベースであり、複数のスレッドがあります。
私は主にLinux用にコーディングしています。Windowsはなじみのない領域です。ご入力いただきありがとうございます。
c - C の小さな事前割り当て配列はオーバーランしません
私はこのコードでセグメンテーション違反を予期していました:
bar はスタックに 2 文字の配列を予約し、foo() は 10 文字を書き込もうとするためです。ただし、printf() は stdout 10 文字で書き込み、エラーは発生しません。なぜこうなった?
さらに、このように foo() 関数を変更すると:
動作はまったく同じです。10 文字が my_ascii にコピーされます。説明はありますか?
事前にどうもありがとうございました。
java - Java で long を byte にキャストする
次のことが理解できません。
ジャバでは、
b の値を出力すると、なぜ -126 になるのですか? long l のビット表現は何ですか?
.net - .NET SerialPort.Read はバイトをスキップします
解決
「port.ReadByte」によるデータ バイト単位の読み取りは遅すぎます。問題は SerialPort クラス内にあります。「port.Read」を介してより大きなチャンクを読み取るように変更しましたが、バッファオーバーランはなくなりました。
私は自分で解決策を見つけましたが、それを書き留めておくと助けになりました。おそらく他の誰かが同じ問題を抱えており、Google経由でこれを見つけています...
(どうすれば回答済みとしてマークできますか?)
編集2
設定することにより
問題を 30 秒ほど遅らせることができます。どうやら、.Net は本当に遅すぎるようです... 私のアプリケーションはそれほど重要ではないので、バッファを 20MB に設定しましたが、それでも原因に興味があります。
編集
以前は考えもしなかったことをテストしました(恥ずかしい):
オーバーランしているようです。.Net 実装は 500k には遅すぎるのでしょうか、それとも私の側にエラーがありますか?
元の質問
私は非常に原始的なオジロ スコープ (avr、ADC データを uart 経由で ftdi チップに送信する) を作成しました。PC側には、このデータを表示するWPFプログラムがあります。
プロトコルは次のとおりです。
2 同期バイト (0xaffe) - 14 データ バイト - 2 同期バイト - 14 データ バイト - ...
私は 16 ビット値を使用するため、14 データ バイト内に 7 チャネル (LSB ファースト) があります。
hTerm で uC ファームウェアを確認したところ、すべてが正しく送受信されます。しかし、C# でデータを読み取ろうとすると、一部のバイトが失われることがあります。oszilloscop プログラムはめちゃくちゃですが、同じ症状を持つ小さなサンプル アプリケーションを作成しました。
a) COM ポートから 1 バイトを読み取り、-1 (EOF) を無視する、および b) 同期パターンを待機する 2 つの拡張メソッドを追加しました。
サンプル プログラムは、最初に (0xaffe) を待ってデータ ストリームに同期し、次に受信したバイト数を期待値と比較します。アサート失敗メッセージが表示されるまで、ループが数回実行されます。Google経由で失われたバイトについて何も見つけることができませんでした。助けていただければ幸いです。
コード
c++ - バッファ オーバーフロー、フォーマット文字列のバグ、整数オーバーフローに対する C++ セキュリティ フレームワーク
バッファ オーバーフロー、フォーマット文字列のバグ、整数オーバーフローから保護する C++ セキュリティ フレームワークを知っている人はいますか?
windows - ヒープ ブロックのメタデータが破損しており、ユーザーがアクセスできる部分はありません。オーバーランですか?
Windows 2008 サーバー、64 ビットで 32 ビット アプリを実行すると、ヒープでメモリ破損が発生しました。破損したヒープ ブロックを確認すると、ヒープ ブロックのメタデータは破損していないことがわかりましたが、ユーザーがアクセスできる部分は破損していました。 (私の分析によると、少なくとも最初の 4 バイトは破損していました)。
ご存知のように、ヒープの破損、メモリのオーバーラン/アンダーラン、ワイルド ポインタの使用、ヒープ ハンドラの不一致、初期化されていないメモリの使用などにつながる可能性はたくさんあります。
ただし、メタデータとユーザーがアクセスできる部分の最初の 4 バイトは隣接する部分であるためです。メモリ オーバーラン/アンダーランの可能性は非常に低いと思います。メモリのオーバーランまたはアンダーランの場合、メタデータも破損する可能性が非常に高いためです。
私の理解が正しいかどうかわかりませんか?誰でもここでヒントを教えてもらえますか?
regex - perl で正規表現をコンパイルするときの「reg_node オーバーラン」
いくつかの (複雑な) 正規表現を定義するスクリプトを実行しようとしています: https://github.com/wo/opp-tools/blob/master/rules/Keywords.pm。このモジュールをインクルードするたびに、Perl がクラッシュし、"panic: reg_node overrun going to emit 51 at rules/Keywords.pm line 60" というメッセージが表示されます。これは、Ubuntu 12.04 上の Perl v5.14.2 です。これの原因となる可能性のあるアイデアをいただければ幸いです。
更新: 問題の原因となるスニペットを次に示します。
c++ - scanf_s 使用時のバッファ オーバーランの問題
非同期型ソケットを使用する単純なクライアント サーバー アプリケーションを作成しています。ただし、クライアントからメッセージを送信すると、バッファ オーバーラン例外が発生します。クライアントコード:
send_buf\recv_buf に不正にアクセスすることと関係があると思いますが、何が原因かわかりません。任意のヒント?