問題タブ [stack-size]

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

c# - モノ、正規表現、スタックサイズ

System.Text.RegularExpressions.RegexソースファイルからのC/C ++インクルードの解析に使用するC#ソフトウェアを移植しています。それらは文字列としてメモリに完全にロードされ、正規表現で処理されます。

Windowsでは完全に機能しますが、Linuxで実行されているMonoは、内部の奥深くからスローされたスタックオーバーフロー例外を使用して、より大きなファイルを解析しようとすると失敗しますSystem.Text.RegularExpressions.Interpreter

コードは完全に正しいです-それはWindowsで動作します。

スタックサイズを増やす方法はありますか?それとも、大きなファイルを小さなチャンクに分割する必要が本当にありますか?

編集:問題の正規表現は次のようになります:

問題の原因となるソースは300kB(〜8k SLOC)以上です。

これは私のコードではないことに注意してください。私はそれを継承しました。

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

c - HP-UX 11 で現在のスレッドのスタック サイズを取得する

HP-UX 11.31 で実行されているアプリケーションで現在のスレッドのスタック サイズを取得しようとしています。

Linux では を使用pthread_getattr_npしましたが、Solaris では を使用できますthr_stksegment

Cでスレッドのスタックサイズを知る方法を見つけてください.

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

javascript - 再帰ループで JSON オブジェクトを繰り返し処理すると、スタック超過エラーが発生する

JS を使用して HTML ページを作成しようとしています。HTML に入力する必要がある内容の詳細は、サーバーから json オブジェクトで送信されます。これで、json オブジェクトは、基本的に dom 構造を模倣するような方法で構造化され、オブジェクトを反復処理して、そこから個々の html 要素データをフェッチし、HTML 文字列をレンダリングします。この問題は、再帰関数を使用してこのオブジェクトを実行すると発生します。スタック超過エラーが発生します。これは、ブラウザのスタック サイズの制限によるものだと思います。スクリプトを失敗させることなく、このオブジェクトを繰り返し処理してページを作成できる最善の方法を理解したいと思います。

このオブジェクトを反復するには、以下の手法を使用します。

この質問が理にかなっていることを願っています。

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

microcontroller - Microchip 社の C18 でより大きなスタック サイズを使用するにはどうすればよいですか?

わかりました、私は長い間この問題を自分で解決しようとしてきましたが、単にあきらめました。もう我慢できなくなり、助けが必要になるまで、すべてのウェブを検索しました。

「C18 Compiler User's Guide」全体を読みましたが、C18 は 256 バイトを超えるサイズのスタックの使用をサポートしていると書かれています。しかし、彼らが要求したことはすべて実行し、リンカー スクリプトを変更し、マルチバンク スタック モデル コンパイラ オプション (-ls) を使用しましたが、スタックの最初のバンクがいっぱいになった後も、変数へのアクセスに問題があります。

関数を単純に再帰的に呼び出す単純なコードをデバッグしました。この関数には 5 つの float パラメーターと 5 つの float ローカル変数があり、各呼び出しでスタック内の約 42 バイトを使用します (パラメーター用に 5*4 + ローカル変数用に 5*4 + 古い SFR2 値を保存するための 2 バイト)。6 回目の呼び出しの後、スタック値は上書きされます。

Web を検索しているときに、大きな配列 (256 バイトを超える) を作成して使用する方法について具体的な指示を出している人がたくさんいるのを見つけました。手順の 1 つは、ポインターを使用して配列の要素にアクセスすることを推奨しています。私の問題は、この「ポインターを使用して異なるバンクの変数にアクセスする」に関連しているように感じますが、関数呼び出しでローカル変数をすべてポインターに変更する方法がわかりません。意味がありません。

正直に言うと、私は本当にばかげたことをしているだけだと思います (この問題について話し合っている人が誰もいなかったので)。私が見つけたスタックサイズの増加に関連するすべてのトピックは、静的変数の使用を提案しただけです。私はこの方法で問題を解決しましたが、C18 がより大きなスタックサイズをサポートする方法を知りたいです。

以下は、この問題を理解するために使用したテスト コードです。デバッグ中に、FSR1 レジスタが正しく更新され、次の関数パラメーターと変数を配置する必要がある次のバンクの次のアドレスを指すようになっていることに気付きました。しかし、ローカル変数が書き込まれると、それらはスタックの一番上に移動します (デバッグ モードで MPLABX IDE によって変数に指定されたアドレスであっても、アドレスの下位バイトのみがデータをスタックに移動すると見なされます。正しい)。このため、問題は、コンパイラが生成したコードがスタックを使用するために 16 ビット アドレスを使用していないことだと確信しています。それでも、私はそれを解決する方法がわかりません。

このトピックに関する議論は大歓迎です:)ありがとう!

0 投票する
0 に答える
143 参照

google-chrome - 呼び出しスタックの最大サイズを超えたエラー / 適切なコンストラクターの記述

まず、以下に投稿する JavaScript コードで「最大コール スタック サイズを超えました」というエラーが発生しましたが、それがどこから来ているのかわかりません。再帰的に何かを呼び出しているとは思いませんし、周りを見回してもエラーの他の原因を見つけることができませんでした。プログラムの実行にChromeを使用しており、コンソールから取得できる詳細は「Vector Vector Vector Vector Vector Vector Vector...」などだけです。これは、Vector関数が再帰的に自分自身を呼び出していることを意味すると思いますが、 、繰り返しますが、それがどこで起こっているのかわかりません。まず、Vector 関数を次に示します。

そして、ここに完全なコードがあります。完全に無視してかまいませんが、私には完璧に隠されている何かがあなたにとって露骨に明らかになるかもしれません。

とにかく、2 つ目は、Vector コンストラクターのいくつかのビットをどのように記述したかについてです。これが何らかの形でエラーを引き起こしている可能性があります。さまざまな時点で、関数のプロパティとメソッドで「new Vector()」を使用していますが、それが違法かどうかはわかりません。以前にエラーなしで実行したと思いますが、よくわかりません。

また、「マグニチュード」、「リバース」、「ユニット」のプロパティについては、メソッドと言い換えるべきでしょうか? 作成時にベクトルの大きさ/逆/単位ベクトルにロックされていると思うので、上部または左側のプロパティが変更されると、間違った値が返されます。私がまだそれらを変更していない唯一の理由は、それらがメソッドというよりもプロパティとして、単に概念的に私を襲ったからです。まだ問題は発生していません。ただ疑問に思っています。

JSFiddle などでこれが必要な場合は、喜んで対応させていただきます。

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

macos - OS X で Clang を使用してコンパイルする場合、スタック サイズを増やすにはどうすればよいですか?

clang++ でスタックサイズを指定できますか? これを可能にするコンパイラ オプションが見つかりません。OS Xを使用しています。

注: この質問は、GCC コンパイラではなく、特に Clang に関するものです。

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

python - Python threading.stack_size() は効果がありません

より多くのスレッドを生成するために、Python スクリプトのスタック サイズを縮小しようとしています。このように設定しています

そして、スレッドが開始される前にインポートレベルに置くと、問題は効果がないことです。それの有無にかかわらず、正確な数のスレッドを開始できます。Windows 7 マシン x64 で Python 2.7 x86 を使用しており、2.4GB 以上の RAM が利用可能です。

なぜ効果がないのかについて何か考えはありますか?生成する必要があるスレッドの数についてコメントするのではなく、解決策を本当に探しています。

スレッドに関連する .pyc ファイルに関係していると思われます。これらの .pyc ファイルを削除し、次の実行時に python に再コンパイルさせると変更が適用されるという状況に直面したことを覚えていますが、どのファイルを調整する必要があるかわかりませんスレッドについて。

私が得ることができる助けをいただければ幸いです。

PS Twisted や Asyncore の使用はお勧めしません。それらの方が優れていることはわかっていますが、コード全体を再設計するのではなく、現在の状況に関して最善を尽くす必要があります。

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

fortran - openmp スレッドスタックを無制限に設定するには?

OpenMP スタック サイズを無制限に設定する方法を教えてもらえますか?
このリンクのように:この openmp コードでセグメンテーション違反が発生するのはなぜですか?

Fortran (顧客の複雑なコード) で作成されたプロジェクトもあります。 を設定OMP_STACKSIZEすると、プロジェクトは正常に実行されます。設定を解除すると、プロジェクトは失敗します。

ただし、入力データが異なれば も異なるOMP_STACKSIZEため、入力データごとに試行する必要があります (メモリを節約する必要があるため)。

pthread ( ulimit -s unlimited) のように OpenMP スタックを設定できますか? または、omp スタック サイズを動的に設定する方法がありますか?

RHEL 6.1 と Intel コンパイラを使用しています。

どうもありがとう!