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, и теперь все работает. Любой ответ, объясняющий, почему это происходит, я приму.