問題タブ [stack-overflow]
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.
java - JavaでStackOverflowErrorを処理するにはどうすればよいですか?
StackOverflowError
Javaでどのように処理できますか?
stack-overflow - スタックオーバーフローの考えられる原因は何ですか?
スタックオーバーフローの考えられる原因は何ですか?
java - Javaで実行時に最大スタックサイズを減らす
コードの一部が無限の反復でスタックし、最終的にStackOverflowが発生するのを防ぐために、junitテストを作成しようとしています。
そのため、実行時にスタックサイズを減らして、Junittestがより速く失敗するようにする方法を探しています。
テストははるかに大きなテストスイートの一部であるため、最大スタックをjvm引数として設定することはできません。
c# - カラーチェンジャー機能のスタックオーバーフローエラー
「赤」と「鮭」の2色があります。パネルの背景色も動的に作成する必要があります。これらの色は2色(赤)の間にある必要があります
しかし、どうすればこれを行うことができますか。上記のコードは私にstackoverflowエラーを与えます。
exception - Windows: スタックに完全な x86 コンテキストをプッシュしないようにする
私は、サボテン スタックを使用して並列プログラムを実装する MS Windows の言語であるPARLANSEを実装しました。スタック チャンクは関数ごとに割り当てられ、ローカル変数、式の一時的なプッシュ/ポップ、およびライブラリの呼び出し (ライブラリ ルーチンが動作するためのスタック スペースを含む) を処理するのにちょうどいいサイズです。このようなスタック フレームは、実際には 32 バイトまで小さくすることができます。
コードが愚かなことをしてハードウェアトラップを引き起こさない限り、これはすべてうまく機能します...その時点で、Windowsはx86マシンコンテキスト全体を「スタックに」プッシュすることを主張しているようです。FP/MMX などを含めると、これは約 500 バイト以上になります。登録します。当然のことながら、32 バイトのスタックで 500 バイトのプッシュを行うと、クラッシュしてはならないものが破壊されます。(ハードウェアはトラップにいくつかの単語をプッシュしますが、コンテキスト全体ではありません)。
[編集 2012 年 11 月 27 日: Windows が実際にプッシュするスタックのばかげた量の測定された詳細については、これを参照してください]
Windows に例外コンテキスト ブロックを別の場所 (スレッド固有の場所など) に保存させることはできますか? その後、ソフトウェアはスレッドで例外ヒットを取得し、小さなスタック フレームをオーバーフローさせることなく処理できます。
これは不可能だと思いますが、もっと多くの聴衆に聞いてみようと思いました。これを引き起こす可能性のあるOS標準の呼び出し/インターフェースはありますか?
OS で実行するのは簡単です。MS に、デフォルトで現在の従来の動作を有効にするために初期化されるコンテキスト ストレージの場所「contextp」をオプションで定義させることができれば、簡単なことです。次に、割り込み/トラップ ベクター コードを置き換えます。
... と ...
someregなどを保存するために必要な明らかな変更があります。
[私が今やっていることは、各関数の生成されたコードをチェックすることです。トラップを生成する可能性がある場合 (例: ゼロ除算)、またはデバッグ中 (不正なポインター deref の可能性など) がある場合は、FP コンテキスト用にスタック フレームに十分なスペースを追加します。スタック フレームのサイズは ~~ 500 ~ 1000 バイトになり、プログラムはそこまで再帰できなくなります。したがって、実行可能な解決策がありますが、デバッグが複雑になります]
編集 8 月 25 日: 私はこの話を、MS の誰が実際に気にかけているかを明らかにする権限を持っている Microsoft の社内エンジニアに伝えることができました。解決へのかすかな希望があるかもしれません。
編集 9 月 14 日: MS Kernal Group Architect はこの話を聞いて同情しています。彼は、MS は (提案されたような) 解決策を検討するだろうが、サービス パックに含まれる可能性は低いと述べた。Windows の次のバージョンを待つ必要があるかもしれません。(はぁ…老けるかも…)
編集: 2010 年 9 月 13 日 (1 年後)。Microsoft 側でのアクションはありません。私の最近の悪夢: Windows X64 で 32 ビット プロセスを実行しているトラップを取得すると、割り込みハンドラーが 32 ビット コンテキストをプッシュするように偽装する前に、X64 コンテキスト全体がスタックにプッシュされますか? それはさらに大きくなります(整数レジスタの2倍、幅の2倍、SSEレジスタの2倍(?))?
編集: 2012 年 2 月 25 日: (1.5 年が経過しました...) Microsoft 側からの反応はありません。彼らは私のような並列性を気にしていないだけだと思います。これはコミュニティへの不利益だと思います。通常の状況下で MS が使用する「ビッグ スタック モデル」は、大量の VM を消費することにより、任意の瞬間に実行できる並列計算の量を制限します。PARLANSE モデルを使用すると、実行中/待機中のさまざまな状態で 100 万個のライブ「グレイン」を持つアプリケーションを作成できます。これは、1 億ノードのグラフが「並行して」処理される一部のアプリケーションで実際に発生します。PARLANSE スキームは、約 1Gb の RAM でこれを行うことができ、かなり扱いやすいです。MS 1Mb の「ビッグ スタック」でそれを試した場合、スタック スペースのためだけに 10^12 バイトの VM が必要になります。
編集: 2014 年 4 月 29 日: (4 年が経ちました)。 MSはSOを読んでいないと思います。 私は PARLANSE で十分なエンジニアリングを行ったので、デバッグ中または FP 操作が進行中の場合にのみ大きなスタック フレームの代償を支払うだけなので、これに対処するための非常に実用的な方法を見つけることができました。MS は失望し続けています。さまざまなバージョンの Windows によってスタックにプッシュされるものの量は、ハードウェア コンテキストの必要性を超えて、大幅かつ著しく異なるようです。この変動性の一部は、MS 以外の製品 (ウイルス対策など) が例外処理チェーンに鼻を突っ込んでいることが原因であるというヒントがあります。なぜ彼らは私のアドレス空間の外からそれを行うことができないのですか? いずれにしても、FP/デバッグ トラップに大きなスロップ ファクターを追加するだけで、これらすべてを処理し、フィールドで必然的な MS システムがその量を超えるのを待ちます。
encryption - AutoLISP コード保護用の Protect.exe
IntelliCAD コンソーシアムのメンバー向けに建築用 LISP ベースのパッケージを開発しています。Web サイトで見つけた推奨事項に従って、Kelvinator を使用してコードの一部を変形および偽装しました。現在、Protect.exe を使用してコードを暗号化しようとしています。出力ファイル名にフォルダー名を使用しようとするまで、exeは機能しているように見えました。
まず、これでいいの?protect.exe はこのように機能しますか、それとも入力ファイルと出力ファイルを同じフォルダーに配置する必要がありますか?
また、一度これを試したところ、「スタックオーバーフロー」エラーが発生しました。したがって、私はここにいます。
string - VB 6.0 で ' を '' に置き換えるとスタック オーバーフローが発生する
Access アプリによる SQL ステートメントの問題を解決するために、レガシーな VB 6.0 コード (Access XP アプリケーション) を調べています。顧客名の名前にアポストロフィが含まれている場合 (例: "Doctor's Surgery":
一重引用符をエスケープするので、有効な SQL を取得できます。
残念ながら、Replace 関数は無限ループとスタック オーバーフローを引き起こします。おそらく、replace 関数は、追加された各引用符を別の 2 つの引用符に再帰的に変換するためです。たとえば、1 つの引用符が 2 つに置き換えられ、2 番目の引用符も 2 つに置き換えられます...
- - - - - - - - 編集 - - - - - - - -
このプロジェクトで使用されている置換関数がカスタム作成されていることに気付きました (ポスターのおかげで)。
どうやら、VB には独自の置換機能が常にあるとは限りませんでした。この実装には欠陥があるはずです。人々のアドバイスに従い、VB 6 の実装を優先してそれを削除します。これが機能しない場合は、機能する独自のものを作成します。ご意見をお寄せいただきありがとうございます。
actionscript-3 - Flex ポップアップ ウィンドウ: スタック オーバーフロー?
Flex 3でどういうわけかスタックオーバーフローを作成しています...モーダルダイアログウィンドウからデータを取得しようとしています:
主な用途:
マイポップアップ:
これが不適切な場合、オブジェクトのデータを使用および取得できるようにポップアップを閉じる正しい方法は何ですか?
c# - オブジェクトをクエリするときのlinq to sql + stackoverflow例外
OK、エンティティの主キーが「自動生成値」に設定されている場合に主キーを照会しようとすると、この問題のみを確認しましたが、これがないと、どのように挿入できますか? これが初心者のlinq2sqlである場合は申し訳ありませんが、私はそれを使い始めたばかりです。
このオプションをオフにしてLinq to Sqlを使用するにはどうすればよいですか?また、dbにpkを処理させますか? 割り当てる必要がある pk を取得するために毎回 qry する必要はありません...
誰かが私を助けてくれることを願っています。私のプロジェクトの 1 つで linq to sql を完全に使用できず、何をすべきかよくわかりません...ここに例を示します。この行は StackOverflow 例外をスローします。
-- その 2 行目は、StackOverflow 例外をスローします。
同じデータコンテキストを使用した別の例を次に示します
私が試すことができるアイデアはありますか?同じソリューションの別のプロジェクトでlinq to sqlを使用しても問題ないようです。
-- 更新 -- この特定のエンティティ 'MyDataTable' には pk が '自動生成値' として設定されていることを忘れていました -- これに設定したのは、SQL で自動インクリメントを実行しているためで、これが ID 列です。