Re: lug-bg: libgtk2.0-bin.deb undefined symbol
- Subject: Re: lug-bg: libgtk2.0-bin.deb undefined symbol
- From: peyo <peyo@xxxxxxxxx>
- Date: Thu, 30 Sep 2004 12:44:16 +0300
On Thursday 30 September 2004 11:41, George Danchev wrote:
> On Thursday 30 September 2004 10:13, peyo wrote:
> --cut--
>
> > Еднакви са. С едно скриптче проверих сумите и на другите библиотеки.
>
> може да провериш и дали са променяни файлове на проблемната машина от тези
> пакети: debsums libgtk2.0-bin libgtk2.0-dev libgtk2.0-0 libc6 | less
Всичко е ОК.
>
> > > /usr/bin/gtk-query-immodules-2.0: relocation
> > > error: /usr/lib/libgtk-x11-2.0.so.0: undefined symbol: gdk_threads_lock
> > > наистина може да се предизвиква от много неща, и това се случва още при
> > > опита да се свърже с първия споделен обект... хм.
>
> ls -la /usr/lib/libgtk-x11-2.0.so.0 къде води ? Да не води към нещо
> в /usr/local и да линква от там стар либ дето няма този символ ?
>
> Т.е. имаш този символ в библиотеката:
> objdump --dynamic-syms /usr/lib/libgtk-x1objdump
--dynamic-syms /usr/lib/libgtk-x11-2.0.so.0.400.10 | grep gdk_threads_lock
резултата е:
00000000 DO *UND* 00000004 gdk_threads_lock1-2.0.so.0 |
grep gdk_threads_lock
> 00000000 DO *UND* 00000004 gdk_threads_lock
>
> но ликнера не ебава да я свързва, без променлива от LD_LIBRARY_PATH.
>
> виж и това дали е така:
> # strace /usr/bin/gtk-query-immodules-2.0 1>/dev/null 2>2
> # grep libgtk 2
> open("/usr/lib/libgtk-x11-2.0.so.0", O_RDONLY) = 3
Има го И си го отваря съвсем читаво.
>
> > > *да не би да е нещо свързано с /etc/ld.so.preload (LD_PRELOAD)
> >
> > ммм.... ще помисля върху това.
>
> т.е. имаш ли нямаш ли такъв файл, какво има в него.
>
Не. Няма го,
> > > * да е от средата на стартиране, на всички потребители ли
> > > изпълняващи /usr/bin/gtk-query-immodules-2.0 им се случва това в
> > > зависимост от това какво добавиш в LD_LIBRARY_PATH.
> >
> > на всички. Независимо дали от някакъв гарфичен терминал или от виртуална
> > конзола.
> >
> > Двете машини са обсолютно идентични що се отнася до пакети. Единствено
> > разликата в хардуера налага различно ядро със съответните модули.
>
> мда, интересно защо линкера се държи по различен начин ;-)
Нека обобщя:
- Обвиняемите библиотеки са читави(?) или поне са това, което трябва да е.
(debsum, md5sum)
- Указателят за местонахождението на динамичните библиотеки е правилен
- Няма счупени зависимости и/или грешки по glibc
- Обекта gdk_threads_lock си съществува и е описан (очевидно)
- Няма указания за предварително зареждане (ld.so.preload)
- и в _двата_ случая линкера си намира библиотеката
----
- По неясни причини в лошият случай обърни внимание:
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x407d0000
забелязвам смяна на режима на достъп към read/write
--> mprotect(0x402fe000, 376832, PROT_READ|PROT_WRITE) = 0
и тук веднага(без междувременно да се случва нещо там) смяна към read/exec
--> mprotect(0x402fe000, 376832, PROT_READ|PROT_EXEC) = 0
writev(2, [{"gtk-query-immodules-2.0", 23}, {": ", 2}, {"relocation error",
16}, {": ", 2}, {"/usr/lib/libgtk-x11-2.0.so.0", 28}, {": ", 2}, {"undefined
symbol: gdk_threads_lo"..., 34}, {"", 0}, {"", 0}, {"\n", 1}], 10) = 108
exit_group(127) = ?
Последните три реда ги няма в читавото изпълнение, което означава, че между
"мапването " и "ънмапването"(което го има в нормалното изпълнение) се случва
нещо, което предизвиква последователна смяна на режима на достъп(което пък
въобще го няма в нормалното изпълнение)
Което пък ме кара да се обърна към gdb да видя ако мога какво става
междувременно.
--
---
"Времето е еднопосочно.
Няма начин да се върнеш назад,
за да си допиеш."
***
Ако не отговарям на писмата Ви - погледнете тук: http://6lyokavitza.org/mail
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================
|