私は現在、Plone 4.3.8サイトを持っており、ポートレットを編集するとデッドロックが発生します。Ploneデッドロックの問題を解決する現代的な方法は何ですか?
私はこれを修正するためのツールを見つけようとしていますが、デッドロックツールの多くは機能しません。&少なくとも実行しているものからは良い情報(IMO)が得られません。
私が試してみた:
- z3c.deadlockdebugger =>スタックトレースを取得することはできません
- ZopeHealthWatcher =>
- Products.LongRequestLoggerコマンドライン(またはWebページ)の結果を見ることができません=>おそらく最高のは、これまでのところ、私にいくつかのログ出力を提供します - しかし、トレースがジアゾコードに焦点を当てスタックだが、ジアゾがスコープ内にないときに問題がまだ(127.0.0.1に対して実行されている)
- GDBが添付発生 - ちょうど上陸しました私のCコードで
- winpdb => gdbと同じ方法で実行中のプロセスにアタッチすることはできません(winpdbによってアタッチされるようになったプロセスのみ)
- Products.signalstack(OR Products.signalstacklogger)=> USR1シグナルは、ゾーププロセス!
注:z3c.deadlockdebugger(およびそれに依存するもの)は、source codeをチェックして、スレッドフレームの依存関係を削除する必要があります。
私の状況は、製品のアップグレード(おそらくplone.app.contenttypesまたはplone.app.multilingualのいずれかまたは両方)にリンクされているようですが、空のサイトにはこの問題はありませんが、 !
私はこれを進めるために何をすべきか?
EDIT:
私はマウリッツが最も正しいものであることを答えると信じて、それは私の場合には動作しませんでした。私がやったことは、pdbを使って、コードがぶら下がっていたポイントを追跡することでした(plone.app.debugtoolbarで起こります)
:それはlongly非推奨ですが、あなたはまた、 'eggs'セクションに追加あなたのビルドアウトでそれを含めるように選択することができます。 pypiには公開されていないので、 'find-links'(' https:// majid.info/python/threadframe/')と' allow-hosts'も追加する必要があります。 –
@keul majidのサイト[threadframeに関する記事](https://majid.info/blog/threadframe-multithreaded-stack-frame-ext-recovery-for-python/)によれば、「Python 2.5以降にはsys._current_frames関数が含まれています)」と言っているので、そのアドバイスを受けています – Danimal
はい、本当ですが、ソースコードを変更したくない場合でも、スレッドフレームを使用することはできます(廃止予定と無用ですが)。 –