問題タブ [futex]
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.
stack - 1 時間/1 日/30 日後にコードがランダムにハングする
ARM 7 コアを搭載した Altera Cyclone V FPGA を使用しています。ミューテックスを使用して 7 スレッドのアプリケーションを実行しています。
アプリケーションは、1 時間後、1 日後、または 1 か月後にランダムにハングします。時間は定義されていません。
アプリケーションがスムーズに実行されているときに strace を実行すると、次のようになります。
ランダムにアプリケーションがハングし、strace の出力は次のようになります。
問題を解決できるように、そのような動作の理由を指摘してください。
linux - futex の待機中に Rocket アプリが Linux でハングする
シンプルなロケット 0.5.0-dev アプリがあります
main.rs
貨物.toml
私の開発マシン(cygwinのrustc 1.47.0(18bf6b4f0 2020-10-07))では、x86_64-pc-windows-gnuターゲットで問題なくこのプログラムを実行してコンパイルできます。
私の CI は、このプログラムを x86_64-unknown-linux-musl 用にビルドし、コンテナーにパックします。
Dockerfile
しかし、このイメージを OSCP にデプロイするとすぐに、何も得られません。プログラムは無期限にハングします。アプリケーションをコンテナーからコピーし、Linux サーバー (SMP Debian 4.9.30-2 (2017-06-12) x86_64 GNU/Linux) で実行しようとしましたが、結果は同じでした。私は私を与えたそれでstraceを実行しました
futex を待っている間にアプリがデッドロックするようですが、理由がわかりません (Windows で発生しない理由もわかりません)。x86_64-unknown-linux-gnu でコンパイルし、システム アロケータに切り替えようとしましたが、どちらも役に立ちませんでした。
c++ - アトミックをキャストしても安全ですかTに
2 つの質問があります。
- 一般的なケースでは、アトミックを T として使用し、それらを交換可能に切り替えることは安全ですか?
- futex の場合、キャストしても安全ですか?
非アトミック型でアトミック操作を実行することは未定義の動作であることは承知していますが、その逆の答えが見つかりません。たとえば、これは期待どおりにコンパイルおよび実行されます。
2 番目の質問については、Linux のマンページで FUTEX_WAIT 操作について説明されています。
futex ワードの値のロードは、アトミック メモリ アクセスです (つまり、それぞれのアーキテクチャのアトミック マシン命令を使用します)。このロード、期待値との比較、およびスリープの開始は、同じ futex ワードに対する他の futex 操作に対してアトミックかつ完全に順序付けられて実行されます。
では、次のコードは安全ですか?