環境: OS:Sun Solarisの10 プロセッサ:AMD 64ビットのSolaris 64ビット関数ポインタの問題
I NET-SNMPライブラリを使用するアプリケーションを持っています。アプリケーションは、さまざまなOSやプロセッサに移植可能です(コードレベル)。 net-snmpでは、何かがログに記録されるときに呼び出されるロギングコールバック(関数ポインタ)を登録できます。
問題は、私がアプリケーションを実行すると、net-snmpが私が登録したコールバック関数を呼び出そうとするときに、segフォールトが発生することです。登録されるコールバックアドレスは0xffe30b90ですが、net-snmpは0xffffffff ffe30b90を呼び出そうとします。
調査中、同じアプリケーションに別の機能を書き込んで登録しました。その関数は適切に呼び出されますが、アドレスは0x52e060(先頭にffはありません)と表示されます。
私はこの問題が何であるか把握できません。これは、バイト整列やいくつかのポインタのオーバーフローの問題に関連しているようです。更なる調査のための指針が理解されるであろう。おかげで、
-Farooque
詳細な調査では、ソースファイル内の関数の位置を変更すると、関数のポインタが変更され、この問題を回避できます。それでも理由はまだありません。 –