問題タブ [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.
memory - 「スタックオーバーフロー」はどのように発生し、どのように防止しますか?
スタック オーバーフローはどのように発生し、それが発生しないことを確認する最善の方法、または特に Web サーバーで発生しないようにする方法はありますが、他の例も興味深いでしょうか?
c - スタックオーバーフローの原因は何ですか?
これは私の質問のトピックがフォーラムの名前に似ているという偶然の一致だと思われるかもしれませんが、実際には「スタックオーバーフロー」という用語をグーグルで検索してここに到達しました。
Cを使用してプログラムするOPNETネットワークシミュレータを使用しています。大きな配列サイズで問題が発生していると思います。ある種のメモリ割り当ての制限に直面しているようです。それは、OPNET、Windows、私のラップトップメモリ、またはおそらくC言語に関係している可能性があります。この問題は、要素の総数が数千の整数になるネストされた配列を使用しようとすると発生します。全体的なメモリ割り当ての制限を超えていると思います。この上限を増やす方法があるかどうか疑問に思っています。正確な問題の説明は次のとおりです。
私は基本的にルーティングテーブルを持っています。これをrouting_tbl[n]と呼びましょう。これは、30ノード(ルーター)をサポートしていることを意味します。ここで、このテーブルの各ノードについて、情報を保持します。path [p]と呼ばれる配列内の、約数百(数百)の使用可能なパス。繰り返しますが、この配列の各パスについて、それに属するノードのリストをhops[h]という配列に保持します。したがって、少なくともnph整数に相当するメモリを使用していますが、このテーブルには他の情報も含まれています。同じ関数で、ほぼ40,000個の整数を消費する別のネストされた配列も使用しています。シミュレーションを実行するとすぐに、スタックオーバーフローについての文句を言うのをやめます。ルーティングテーブルの合計サイズを小さくすると機能します。何が問題を引き起こしていると思いますか、そしてそれをどのように解決することができますか?アリに感謝します
c# - StackOverflowException を防止および/または処理するにはどうすればよいですか?
私が書いている内のメソッドStackOverflowException
への呼び出しから取得している を防止または処理したいと思います。問題は、ユーザーが無限に再帰的な を記述できるように思われ、メソッドの呼び出しで爆発するだけです。(つまり、問題は、通常、このような例外の原因である典型的なプログラム エラーだけではありません。)XslCompiledTransform.Transform
Xsl Editor
Xsl script
Transform
許可される再帰の回数を検出および/または制限する方法はありますか? または、このコードが爆発しないようにするための他のアイデアはありますか?
java - StackOverflowErrorとは何ですか?
とは何ですかStackOverflowError
、何が原因で、どのように対処すればよいですか?
asp.net-mvc - linq クエリが原因の StackOverflowException
編集#2:質問は途中で解決しました。下を見てください
フォローアップの質問として、私が以下でやろうとしていることを解決するための邪魔にならない方法を知っている人はいますか (つまり、無限ループをトリガーせずにオブジェクトを相互にリンクします)?
asp.net-mvc Web アプリケーションを作成しようとすると、StackOverFlowException が発生します。コントローラーは次のコマンドをトリガーします。
GameService は次のように処理します (WithCountryId は拡張機能です)。
GameRepository は次のように処理します。
GetGames() メソッドにより、StackOverflowException が発生します。
私のビジネス オブジェクトは linq2sql クラスとは異なります。そのため、それらに select new を入力します。
タイプ 'System.StackOverflowException' の未処理の例外が mscorlib.dll で発生しました
編集#1:犯人を見つけました。それは次のメソッドです。GetCountries()メソッドをトリガーし、その代わりにGetSubRegions()を再びトリガーします。
ここで何か他のことを考えなければならないかもしれません:)コーヒーが多すぎるためにオブジェクト指向の考え方で考えると、それが起こります
delphi - EStackOverflow が非推奨になってからどのくらい経ちますか? また、それを置き換えるものは何ですか?
SysUtils.pas で定義されている EStackOverflow は、Delphi 2009 で非推奨としてマークされていることに気付きました。確認したところ、2007 年には非推奨としてマークされていました。Delphi 7 のインストール ディスクはここにありますが、いつわかるか誰かに尋ねようと思いました。それは廃止されました。
さらに、誰かが理由を知っていますか、そしてそれを置き換えるものは何ですか? 再帰によってスタック オーバーフローを引き起こすテスト アプリケーションを作成しましたが、それでも EStackOverflow 例外が発生しますが、それ専用のハンドラーを追加すると、
[DCC 警告] Unit57.pas(85): W1000 シンボル 'EStackOverflow' は非推奨です
EStackOverflow が EExternal から派生していること、および EExternal をトラップして ExceptionCode の STATUS_STACK_OVERFLOW をチェックできることはわかっていますが、それでも EStackOverflow 例外がスローされるため、これは不要のようです。
これは、自分のコードで EStackOverflow をスローするのを思いとどまらせるためだけですか?
(はい、 StackOverflowという Web サイトでEStackOverflowについて質問するのは皮肉なことだと思います。はい、私は完全に真剣です .)
c - C でのスタック オーバーフローの悪用
質問は、実際には C のスタック オーバーフローに関するものです。私は一生やり遂げることができない割り当てを持っています。gdb のすべてを見てきましたが、それを理解することはできません。
質問は次のとおりです。
わかりましたので、最初の質問を正しく取得することができました。これは、メイン パスで明示的に呼び出されていない 2 つの関数のいずれかを任意に呼び出すことです。ちなみに、これはプログラムを変更せずに実行中に行う必要があります。N
に設定してプログラムを実行することでこれを行いました。これにより7
、フレームの関数ポインターが表示され、混乱したまたはのメモリアドレスでvictim_func
書き込み、動作します。(私は 64 ビット マシンを使用しています。そのため、EBI ポインターの幅が 1 ではなく 2 int であるため、7 にする必要があります)a[7]
shell_call
私の質問は次のとおりです。関数に渡される引数をどのように制御できshell_code
ますか? すなわち。string
に を書くにはどうすればよいですかchar* c
。全体のポイントは、プログラムのみを実行して、psなどの unix コマンドを実行することです。
EBI ポインタをpsの 16 進表現で記述し、引数リストをshell_call
それに設定することを考えましたが、うまくいきませんでした。argsv
また、引数を入力して、の引数リストをメインに設定しようとshell_call
しましたarg_list
が、どちらも機能しませんでした。
2番目のバージョンは機能するはずですが、新しいスタックフレームの引数リストを正しく設定していないと思います(関数ポインターの最初の部分であるため、 に書き込み、 and を書き込むことでそれをa[8]
行いましたが、おそらくこれらは のパラメータであるため正しくありません。では、 のパラメータにアクセスするにはどうすればよいですか?0
a[9]=736c
a[10]=0000
victim_func
shell_call
excel - Long データ型のオーバーフロー
VBA Excel で素因数分解を実行しようとしていますが、long
データ型の制限に達しています -
実行時エラー 6 オーバーフロー
これを回避し、VBA 内にとどまる方法はありますか? 明らかに、より適切な別のプログラミング言語を使用することになることは承知しています。
Lance のソリューションは、大きな数値を変数に入れることができるようになりました。ただし、関数を適用しようとすると、たとえばMOD
bignumber 、エラーメッセージで失敗しますMOD 2
実行時エラー 6 オーバーフロー
asp.net - カッシーニ(別名VS Dev Server)のスタック制限とは何ですか?
256kの制限があるIIS6/2k3でStackOverflowException(質問しないでください。私のせいではありません)が発生していますが、VSデバッガーでは例外は発生しません。
理解の問題として、私は知りたいのですが、カッシーニのスタック制限が何であるかをグーグルで検索できませんでした...実際にそれがある場合はどうなりますか?
java - Java スタック オーバーフロー エラー
こんにちは、Sun アプリケーション サーバー 8.2 ドメインを再起動した後、このエラーに遭遇することがあります。
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:255) での javax.servlet.ServletExceptionソース不明) (sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25))、java.lang.reflect.Method.invoke(Method.java:585)、org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil) .java:249) で java.security.AccessController.doPrivileged(Native Method) で javax.security.auth.Subject.doAsPrivileged(Subject.java:517) で org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java) :282) org.apache.catalina.core.ApplicationFilterChain の org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165) で。internalDoFilter(ApplicationFilterChain.java:257) at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:55) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:161) at java .security.AccessController.doPrivileged(Native Method) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723) org .apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:484) org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:417) org.apache.catalina.core.ApplicationDispatcher.access$000( ApplicationDispatcher.java:80) org.apache.catalina.core.ApplicationDispatcher$PrivilegedForward.org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:313) で java.security.AccessController.doPrivileged(Native Method) で (ApplicationDispatcher.java:95) を実行します。org.apache.catalina.core.StandardHostValve で。 custom(StandardHostValve.java:448) org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:339) org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:282) org.apache .catalina.core.StandardHostValve.postInvoke(StandardHostValve.java:184) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:552) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java) :132) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551) で org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:933) org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:189) で com.sun.enterprise.web.connector.grizzly.ProcessorTask.doProcess(ProcessorTask.java:604) で com.sun .enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:475) com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:371) com.sun.enterprise.web .connector.grizzly.ReadTask.doTask(ReadTask.java:264) com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:281) com.sun.enterprise.web.connector.grizzly .WorkerThread.run(WorkerThread.java:83)----- 根本原因 ----- com.sun.security.auth.PolicyFile の java.security.AccessController.doPrivileged(Native Method) での java.lang.StackOverflowError .getPermissions(PolicyFile.java:818) javax.security.auth.SubjectDomainCombiner$3.run(SubjectDomainCombiner.java:357) の java.security.AccessController.doPrivileged(ネイティブ メソッド) の javax.security.auth.SubjectDomainCombiner.combineJavaxPolicy(SubjectDomainCombiner.java:353) の javax.security.auth.SubjectDomainCombiner.combine (SubjectDomainCombiner.java:191) で java.security.AccessControlContext.goCombiner(AccessControlContext.java:390) で java.security.AccessControlContext.optimize(AccessControlContext.java:304) で java.security.AccessController.checkPermission(AccessController.java: 426) で java.lang.SecurityManager.checkPermission(SecurityManager.java:532) で java.security.Security.getProperty(Security.java:724) で com.sun.security.auth.PolicyFile.initPolicyFile(PolicyFile.java:356) ) com.sun.security.auth.PolicyFile.init(PolicyFile.java:269) の com.sun.security.com.sun.security.auth.PolicyPermissions.init(PolicyFile.java:1416) の auth.PolicyFile.getPermissions(PolicyFile.java:869) com.sun.security.auth.PolicyPermissions.elements(PolicyFile.java:1429) のjavax.security.auth.SubjectDomainCombiner.combineJavaxPolicy(SubjectDomainCombiner.java:366) で javax.security.auth.SubjectDomainCombiner.combine(SubjectDomainCombiner.java:191) で
…無限に