1

プログラムの起動時に発生したバグを追跡しています。gdb が提供するバックトレースは次のとおりです。

(gdb) bt
#0  0xb753f571 in llvm::cl::parser<llvm::FunctionPass* (*)()>::getOption(unsigned int) const () 
from ./libgdl.so
#1  0xb79aeab4 in llvm::cl::generic_parser_base::findOption(char const*) ()   
from ./libgdl.so
#2  0xb753f679 in llvm::RegisterPassParser<llvm::RegisterRegAlloc>::NotifyRemove(char const*) () 
from ./libgdl.so
#3  0xaf35f0b6 in llvm::MachinePassRegistry::Add(llvm::MachinePassRegistryNode*) () from /usr/lib
/i386-linux-gnu/libLLVM-3.1.so.1
#4  0xaef42b16 in ?? () from /usr/lib/i386-linux-gnu/libLLVM-3.1.so.1
#5  0xb7fece9b in ?? () from /lib/ld-linux.so.2

実際、クラッシュの原因は、システムが LLVM 3.1 (グラフィックス関連のタスク用) を使用しているときに、プログラム ( libgdl.so ) に組み込まれている LLVM 3.0 を使用している
場合です: NotifyRemove 関数を使用すると、呼び出しは libgdl.so の LLVM のバージョンに転送され、バージョンに互換性がないためクラッシュにつながります。

このような混乱を防ぐ方法はありますか?

4

0 に答える 0