dlopen не может загрузить библиотеку, неверный указатель

У меня есть библиотека "libqscr.so", которую я загружаю в свою программу во время выполнения, используя dlopen. Это работало отлично, после того, как я перезагрузил свой компьютер, dlopen начал выдавать мне эту ошибку:

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

Я попытался перекомпилировать библиотеку, но проблема остается. Я заметил, что это происходит только когда путь правильный, в противном случае возвращается ноль. Кстати, я запускаю все это на Ubuntu 14.04.

РЕДАКТИРОВАТЬ: я заметил, что эта проблема возникает только с этой конкретной библиотекой, другие загружаются нормально.

РЕДАКТИРОВАТЬ 2: Таким образом, я отследил проблему в библиотеке, и даже функцию, которая вызывает это. Я заметил, что если я удалил функцию 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;
}

Есть идеи, почему это происходит?

Еще одно ИЗМЕНЕНИЕ (3): я удалил вызов функции trunc, и теперь все работает. Любой ответ, объясняющий, почему это происходит, я приму.

0 ответов

Другие вопросы по тегам