у меня есть библиотека, которую использует СУБД Cache в своей работе. Использует удачно. Это so файл.
Вот смотрите, сами:
user$ /tmp/1 $ ldd /usr/local/mca/servers/mca/lib/libccallin.so
libpm.so.0 => /usr/local/mca/servers/mca/lib/libpm.so.0 (0x00002b6cbb3ef000)
libcache.so => /opt/cache2007/bin/libcache.so (0x00002b6cbb52e000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00002b6cbbaad000)
libm.so.6 => /lib64/tls/libm.so.6 (0x00002b6cbbc9e000)
libc.so.6 => /lib64/tls/libc.so.6 (0x00002b6cbbe24000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002b6cbc058000)
libshared.so => /usr/local/mca/libs/binreloc/lib/libshared.so (0x00002b6cbc164000)
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00002b6cbc267000)
libZThread-2.3.so.2 => /usr/local/mca/libs/zthread/lib/libZThread-2.3.so.2 (0x00002b6cbc475000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002b6cbc5bf000)
librt.so.1 => /lib64/tls/librt.so.1 (0x00002b6cbc6c2000)
/lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x00002b6cbc7dc000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00002b6cbc8f2000)
user$ /tmp/1 $ cat 1.c
#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>
int main (int argc, char *argv[]) {
int han;
han = dlopen("/usr/local/mca/servers/mca/lib/libccallin.so", RTLD_LAZY);
if (!han) {
printf("Error: %s\n", dlerror());
}
printf("Done\n");
exit(0);
}
user$ /tmp/1 $ gcc -g 1.c -o 1 -ldl && ./1
1.c: In function `main':
1.c:9: warning: assignment makes integer from pointer without a cast
Segmentation fault
user$ /tmp/1 $
user$ /tmp/1 $ gdb ./1
GNU gdb Red Hat Linux (6.3.0.0-1.132.EL4rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu"...Using host libthread_db library "/lib64/tls/libthread_db.so.1".
(gdb) r
Starting program: /tmp/1/1
[Thread debugging using libthread_db enabled]
[New Thread 47175520534080 (LWP 27253)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 47175520534080 (LWP 27253)]
0x0000003620a0aafe in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
(gdb) bt
#0 0x0000003620a0aafe in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#1 0x0000003620cf85f2 in _dl_open () from /lib64/tls/libc.so.6
Previous frame inner to this frame (corrupt stack?)
(gdb)
я так понимаю, в этой библиотеке создаеться поток, который и вызывает SIGSEGV ?
только я не понимаю, как может вызваться функция в этой библиотеке, если RTLD_LAZY не делает этого.
может кто-то дать комментарий ?
Ответ на:
комментарий
от Reset
Ответ на:
комментарий
от Reset
Ответ на:
комментарий
от nial
Ответ на:
комментарий
от mky
Ответ на:
комментарий
от nial
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Ktorrent, segmentation fault, что можно сделать? (2009)
- Форум как отладить прогу на языке D? (2007)
- Форум Firefox не слинкован с libX11.so, но как-то же выводит на экран! Как? (2015)
- Форум Частые сегфолты R под HP-UX (проблема со сборкой?) (2018)
- Форум Ставлю сервер bf1942, проблемы с ldd (2011)
- Форум Минималистичный графический системный монитор xosview обновился до версии 1.21 (2018)
- Форум ldd наотрез отказывается видеть библиотеку, хотя все путипрописаны (2013)
- Форум Django lib-dynload/termios.so Segmentation fault (2013)
- Форум узнать версии библиотек и пакеты которые их устанавливают в систему (2017)
- Форум error while loading shared libraries (2012)