問題タブ [infinite-loop]

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

objective-c - メソッド/IBActionが無限ループでスタックしました。まだ成功していません

これは以前の問題/質問のように聞こえるかもしれませんが、他の質問で回答されたいくつかのことを変更して試し、それを機能させるようにしましたが、それでも同じ問題が発生します。

NSManagedObjectサブクラス内からコアデータプロパティを監視しており、プロパティが変更されたときに呼び出されるメソッドは別のメソッドを呼び出しますが、このメソッドでは、KVOメソッドをトリガーするコアデータオブジェクトを追加して、メソッドを再度トリガーします。何か違うことが起こっているように見えるので、それについてはよくわかりません。ここに一連のイベントがあります…</ p>

  1. iCalと同期するボタンをクリックします(これは、メソッドsyncKVOとまったく同じコードを持つIBAction内にあります)。この同期は正常に機能します。
  2. アウトラインビューにオブジェクトを追加します。すべては順調です。
  3. iCalと同期するKVO宣言をトリガーする名前を変更します(「name」プロパティを変更したため)。正常に動作します。
  4. 追加したオブジェクトを削除すると、どういうわけかKVO宣言がトリガーされ(したがってメソッドがトリガーされ)、無限ループに陥ります。

さて、いくつかのコードについて。

NSManagedObjectサブクラス(JGManagedObjectと呼ばれる)内のコード…</ p>

KVO宣言(アプリデリゲート内)…</ p>

メソッド(これもアプリデリゲート内)…</ p>

私が試したこと…</p>

KVO宣言を呼び出すキーパスのフィルタリング

オブザーバーの取り外しと再接続

しかし、それで1回目は機能しますが、2回目は、監視していないためにオブザーバーを削除できないと言ってメソッドを停止します。これは、最初にオブザーバーを追加したので意味がありません。そのため、このコードを実際のメソッドから除外しました。そうしないと、2回目の同期で停止します。

これで何が起こっているのかわかりません、私はすべてを試したと思います。何がうまくいかなかったのですか?

どんな助けでも大歓迎です。

0 投票する
2 に答える
748 参照

objective-c - ループを停止する

0 投票する
2 に答える
1712 参照

xslt - 無限ループでぶら下がっているテスト時

XSLT 1.0で文字列をトークン化し、空の文字列がトークンとして認識されないようにしようとしています。XSLTクックブックに基づく関数全体は次のとおりです。

string私が渡しているその値は次のとおりです。

ヨーロッパ;#6; #Global;#3; #Middle East、Africa and Caucasus; 2; #Europe;#6; #Global;#3; #Middle East、Africa and Caucasus

£$インジケーターはそこにあるので、空の文字列が出力されていないことがわかります。これはSharePoint内にあるため、デバッグが困難です。)

このコードは、XSLTの処理をハングさせます。問題の原因となっている行は<xsl:when test="not($delimiter) and $string != ''">です。2番目のテストを削除するとすぐに、and再び機能します。私もand string($string)成功せずに試しました。

なぜこれが起こっているのか、そしてそれを解決する方法を知っている人はいますか?

0 投票する
12 に答える
17083 参照

php - PHPで無限ループが役立つのはいつですか?

ポールハドソンの素晴らしいオンラインPHPチュートリアルを読んでいる間、彼は言いました

おそらく驚くべきことに、スクリプトでは無限ループが役立つことがあります。無限ループは外部の影響なしに終了することはないため、それらを使用する最も一般的な方法は、条件が一致するたびにループから抜け出すか、ループ内からスクリプトを完全に終了することです。また、ユーザー入力に依存してループを終了することもできます。たとえば、ユーザーが必要なだけデータを入力できるようにするプログラムを作成している場合、スクリプトループを30,000回、さらには300,000,000回実行しても機能しません。 。代わりに、ユーザーがCtrl-Cを押してプログラムを終了するまで、コードは永久にループし、ユーザー入力を常に受け​​入れます。

PHPで無限ループを使用する方法の簡単な実行例を教えてください。

0 投票する
2 に答える
3189 参照

git - Gitリポジトリの変更に対するハドソン無限ループポーリング?

hudsonのgitプラグインはうまく機能します。ただし、ビルドスクリプトは、リポジトリ内のファイルのバージョン番号を更新し、コミットして、リポジトリにプッシュバックする必要があります。

ハドソンが変更をチェックするために次にポーリングすると、「変更」が再度ビルドされるとコミットが確認され、変更がコミットされるため、再度ビルドされてから、別の変更がコミットされるなど、無限ループに入ります。アイデア。

私はそれを停止し、各リポジトリで「git log」を実行し、gitls-treeHEADを使用して最新のコミットIDがまったく同じであることを比較しました

また、Hudsonは次のコマンドを実行して、変更を確認します。

git fetch + refs / heads / :refs / remotes / origin / git ls-tree HEAD

Hudson自体がワークスペースリポジトリからコミットをプッシュし、明らかにls-treeの結果が一致するため、このコマンドはどのようにして変更があったかを判断できますか?

ビルドを実行する前にls-treeの結果を保存し、最新のコミットがないものと比較する必要があるようです。ああ。その理論をテストするために、コミットをオフにしてみることができます。

とにかく、Hudsonのgitプラグインの問題を修正するのではなく、ビルドの最後にリポジトリが同一であり、Hudsonがそれを認識できるようにするにはどうすればよいですか。

これを修正する方法は?何か案は?

ウェイン

0 投票する
6 に答える
10425 参照

python - シグナルを受け入れないスタックされたPythonプロセスからスタックトレースを取得します

従来のZope2Webサイトを運営し、それに不満を持っている必要があります。最大の問題は、時折、ロックアップし、100%のCPU負荷で実行され、要求に応答しなくなることです。この問題は定期的に再現することはできませんが、3つの動的グラフを含む1ページで問題が発生することがあるため、ある種の競合状態が原因で無限ループやビジーウェイトが発生しているのではないかと思います。

問題は、私はまだこのことをデバッグする方法を見つけていないということです。Zopeログには何もありませんし、システムログにも何もありません。スタックトレースを取得するためにこの質問からの提案を試しましたが、効果がある唯一のシグナルはですSIGKILL

プロセスがスタックしたときにプロセスが正確にどこにあるかを見つける別の可能性はありますか?

0 投票する
2 に答える
2058 参照

sql - SQL-Serverの無限ループ

sql-serverは無限ループをどのように処理しますか?それを検出しますか、それともサーバーを強制終了しますか。

例えば:

0 投票する
4 に答える
806 参照

language-agnostic - ループ内の技術的な非終了条件

私たちのほとんどは、ループに非終了条件があってはならないことを知っています。たとえば、この C# ループには非終了条件があります。つまり、i の偶数値です。これは明らかな論理エラーです。

非常にありそうもないが、技術的には終了しない状態を構成するエッジ ケースが時々あります (スタック オーバーフローとメモリ不足エラーは別として)。ストリーム内の連続するゼロの数をカウントする関数があるとします。

さて、あなたがこれを与えたとしましょう:

または、より現実的には、外部ハードウェアからデータを返すストリームで、場合によっては多数のゼロを返す可能性があります (机の上にあるゲーム コントローラーなど)。いずれにせよ、無限ループがあります。この特定の非終了条件は際立っていますが、そうでない場合もあります。

私が書いているアプリのように、完全に現実世界の例です。ゼロのエンドレス ストリームは、無限の「空の」オブジェクトに逆シリアル化されます (アイテムが 20 億を超えたためにコレクション クラスまたは GC が例外をスローするまで)。しかし、これはまったく予想外の状況です (私のデータ ソースを考えると)。

非終了条件がまったくないことはどれほど重要ですか? これは「堅牢性」にどの程度影響しますか? それらが「理論的に」非終了である場合にのみ問題になりますか(例外が暗黙の終了条件を表している場合は問題ありませんか)? アプリが商用かどうかは重要ですか? 一般配布したら?問題のあるコードがパブリック インターフェイス/API を介してアクセスできない場合は問題になりますか?

編集: 私が持っている主な懸念の1つは、非終了条件を作成する可能性のある予期しない論理エラーです。原則として、非終了条件がないことを確認すると、これらの論理エラーをより適切に識別または処理できますが、それだけの価値があるでしょうか? そしていつ?これは、信頼と直交する懸念事項です。

0 投票する
2 に答える
2188 参照

jquery - コールバックでjQuery.remove()を呼び出すと、無限ループがトリガーされます

私は問題自体が解決されたように見えますが、誰かがこれの理由に光を当てることができることを望んでいます...

以下は、ユーザーフィードバックメッセージを含むdivを削除することを目的とした同じ関数の2つのスナップショットです。オプションのタイムアウトを使用するように設定されています。タイムアウトが指定されている場合は、setTimeout()を使用して自身を呼び出し、divを削除します。

関数の2つのバージョンの唯一の違いは、this.remove()が呼び出される場所です-問題のあるバージョンでは、最初にblackbirdjsを使用してログにメッセージを送信し、次にthis.remove()を呼び出します-これが実行された後、ログはフラッディングされますブラウザがそれらを送り込むことができるのと同じくらい速く「フィードバックdivを削除しています...」の終わりのないログメッセージで。

ただし、作業バージョンでは、順序を逆にすると、すべてが正常に実行され、すべてが正常に実行されます...

私は困惑しています。この場合の順序は些細なことだと思いますが、明らかにそうではありません。なぜこれが起こるのか、誰かが光を当てることができますか?これはjQueryのバグですか、それともブラックバードの問題ですか、それともJavaScriptの奇妙な癖ですか?

注:
confirm()の呼び出しを使用して、さまざまな成功を収めました-falseに戻った場合は、戻るように指示しましたが、これで停止しました-ただし、remove呼び出しの後にreturnを追加しても効果はありませんでした。

興味深いことに、どちらのバージョンもIE8で正常に動作するようです。したがって、これはFirefox / geckoの問題である可能性がありますか?

問題コード:

作業コード: