LINUX.ORG.RU

динамически подгружаемая библиотека (плагин) не выгружается

 


0

4

Есть некая закрытая система фирмы А, для которой мы делаем плагин в виде динамически подгружаемой библиотеки. Как узнать, почему она не выгружается по dlclose?

Коллега из фирмы А посоветовал посмотреть на LD_DEBUG, но там же сам черт ногу сломит - логфайл получается в 1,2млн строк.

Дык какую ошибку выдаёт dlclose()?

       On success, dlclose() returns 0; on error, it returns a nonzero value.

       Errors from these functions can be diagnosed using dlerror(3).
DELIRIUM ☆☆☆☆☆
()

А что не посоветовал прочитать man к dlclose() ? Кроме ошибки есть ещё такое...

... decrements the reference count on the dynamically loaded shared object referred to by handle ... If the reference count drops to zero, then the object is unloaded ... In addition to references resulting from explicit dlopen() calls, a shared object may have been implicitly loaded (and reference counted) because of dependencies in other shared objects. Only when all references have been released can the shared object be removed from the address space

...но там же сам черт ногу сломит - логфайл получается в 1,2млн строк.

Теперь осталось научиться пользоваться grep, awk, coreutils или может быть немного осилить какой-нибудь питон.

mashina ★★★★★
()
Ответ на: комментарий от JackyTreehorn

Есть ещё man ld.so. Просто посмотреть вывод и попробовать понять как в нём выглядит интересующая информация религия виндузятника не позволяет?

mashina ★★★★★
()
Ответ на: комментарий от mashina

Почему бы вам просто не перестать выеб^Wвыпендриваться и не написать конкретно? Но если религия не позволяет, лучше не пишите ничего. Подожду более адекватных коллег.

JackyTreehorn
() автор топика
Ответ на: комментарий от JackyTreehorn

Начни с «grep <имя_библиотеки>», а там уже по ситуации.

Gvidon ★★★★
()
Ответ на: комментарий от JackyTreehorn

Так не интересно же. На работе запаришься конкретно деревянным рассказывать, нужно ж хоть где-то с вас поржать.

anonymous
()

логфайл получается в 1,2млн строк.

Тогда нужно написать минимальную прогу main на замену закрытой системы, которая делает только dlopen(), dlopen(), dlclose(), dlclose() плагина - и посмотреть как это выглядит. А можно дополнительно написать ещё одну минимальную либу foo, которую будет подгружать main. А эта foo будет делать только dlopen() (но без dlclose()) плагин. И снова смотреть в логи.

gag ★★★★★
()
Ответ на: комментарий от UVV

Нет.
Попробовал для начала объявить все ненужное как локальное (--version-script), и это помогло.
Всем искренне желающим помочь - большое спасибо!

JackyTreehorn
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.