私は、Solaris から Red Hat にテスト アプリケーションを移植する仕事を提供されたインターンです。アプリケーションは Ada で書かれています。Unix側では問題なく動作します。Linux 側でコンパイルしましたが、現在、セグ フォールトが発生しています。デバッガーを実行して障害の場所を確認したところ、次のようになりました。
Warning: In non-Ada task, selecting an Ada task.
=> runtime tasking structures have not yet been initialized.
<non-Ada task> with thread id 0b7fe46c0
process received signal "Segmentation fault" [11]
task #1 stopped in _dl_allocate_tls
at 0870b71b: mov edx, [edi] ;edx := [edi]
この seg fault は、呼び出しが行われる前、または何かが初期化される前に発生します。ada の「タスク」はプログラムの残りの部分よりも先に開始されると言われましたが、問題は実行中のタスクにある可能性があります。
しかし、ここにキッカーがあります。このプログラムは、別のプログラムが使用するコードを生成するだけです。OTHER プログラムを Linux でコンパイルすると、同じ種類のエラー メッセージとともに同じ種類のセグ フォールトが表示されます。これは、これをすべて修正するために使用できる小さな調整があるかもしれないと私に信じさせますが、Unix、Linux、および Ada について、これを自分ですべて理解するのに十分な知識がありません。