0

ライブラリ「libqscr.so」があり、実行時に dlopen を使用してプログラムにロードします。PCを再起動した後、dlopenで次のエラーが発生し始めました。

*** Error in `/path/to/program': realloc(): invalid pointer: 0xbfffef5c ***

ライブラリを再コンパイルしようとしましたが、問題は残ります。パスが正しい場合にのみ発生することに気付きました。それ以外の場合は null が返されます。ところで、私はこれをすべてUbuntu 14.04で実行しています。

編集:この問題はその特定のライブラリでのみ発生し、他のライブラリは正常にロードされることに気付きました。

EDIT2:だから私は問題をライブラリに追跡し、それを引き起こしている機能さえも追跡しました。setLength 関数を削除すると、すべてが正常に機能し始めることに気付きました。

alias Tqarray = Tqvar[];
Tqarray[string] vals;
struct Tqvar{
    string s;
    double d;
    bool ii = true;
}

Tqvar setLength(Tqlist args){
    Tqvar r = args.read(0);
    vals[r.s].length=to!uint(trunc(args.read(1).d));
    return r;
}

なぜこれが起こっているのですか?

さらに別のEDIT(3):trunc関数呼び出しを削除しましたが、現在はすべて機能しています。なぜそれが起こっているのかを説明する答えがあれば、私は受け入れます。

4

0 に答える 0