* [devel] Как пролезли undefined symbol?
@ 2009-05-16 7:56 Max Ivanov
2009-05-16 8:00 ` Damir Shayhutdinov
2009-05-16 8:23 ` Alexey Tourbin
0 siblings, 2 replies; 12+ messages in thread
From: Max Ivanov @ 2009-05-16 7:56 UTC (permalink / raw)
To: ALT Linux Team development discussions
Добрый день! Как такое могло получиться: /usr/lib/mlt/libmltcore.so:
undefined symbol: pow
столько закручивали гайки, а оно всё равно вот такое пропускает.
Пофиксил, отправил, вина моя и посыпаю голову пеплом. Но всё же, может
есть какой макрос, что б проверяло на эти самые undefined и не
пропускало?
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 7:56 [devel] Как пролезли undefined symbol? Max Ivanov
@ 2009-05-16 8:00 ` Damir Shayhutdinov
2009-05-16 8:23 ` Alexey Tourbin
1 sibling, 0 replies; 12+ messages in thread
From: Damir Shayhutdinov @ 2009-05-16 8:00 UTC (permalink / raw)
To: ALT Linux Team development discussions
> Добрый день! Как такое могло получиться: /usr/lib/mlt/libmltcore.so:
> undefined symbol: pow
> столько закручивали гайки, а оно всё равно вот такое пропускает.
>
> Пофиксил, отправил, вина моя и посыпаю голову пеплом. Но всё же, может
> есть какой макрос, что б проверяло на эти самые undefined и не
> пропускало?
То, что не в libdir выдает warning вместо error, когда там undefined
symbol. Ибо есть много ложных срабатываний, на всяких плагинах и т.п.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 7:56 [devel] Как пролезли undefined symbol? Max Ivanov
2009-05-16 8:00 ` Damir Shayhutdinov
@ 2009-05-16 8:23 ` Alexey Tourbin
2009-05-16 8:32 ` Boris Savelev
2009-05-16 9:49 ` Max Ivanov
1 sibling, 2 replies; 12+ messages in thread
From: Alexey Tourbin @ 2009-05-16 8:23 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1327 bytes --]
On Sat, May 16, 2009 at 11:56:21AM +0400, Max Ivanov wrote:
> Добрый день! Как такое могло получиться: /usr/lib/mlt/libmltcore.so:
> undefined symbol: pow
> столько закручивали гайки, а оно всё равно вот такое пропускает.
>
> Пофиксил, отправил, вина моя и посыпаю голову пеплом. Но всё же, может
> есть какой макрос, что б проверяло на эти самые undefined и не
> пропускало?
В "плагинах" в общем случае нельзя требовать чтобы все символы были
непосредственно разрешены.
$ ldd -r /usr/lib64/zsh/zpty.so |& head
undefined symbol: mypid (/usr/lib64/zsh/zpty.so)
undefined symbol: lines (/usr/lib64/zsh/zpty.so)
undefined symbol: errflag (/usr/lib64/zsh/zpty.so)
undefined symbol: scriptname (/usr/lib64/zsh/zpty.so)
undefined symbol: coprocin (/usr/lib64/zsh/zpty.so)
undefined symbol: columns (/usr/lib64/zsh/zpty.so)
undefined symbol: contflag (/usr/lib64/zsh/zpty.so)
undefined symbol: retflag (/usr/lib64/zsh/zpty.so)
undefined symbol: breaks (/usr/lib64/zsh/zpty.so)
undefined symbol: lastval (/usr/lib64/zsh/zpty.so)
$
Эти символы определны в /bin/zsh. Для этого /bin/zsh линкуется
с флагом -rdynamic. Это такая легальная схема, почему в elf shared
object могут допускаться undefined symbols.
Макрос называется
%set_verify_elf_method strict
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 8:23 ` Alexey Tourbin
@ 2009-05-16 8:32 ` Boris Savelev
2009-05-16 8:43 ` Alexey Tourbin
2009-05-16 9:49 ` Max Ivanov
1 sibling, 1 reply; 12+ messages in thread
From: Boris Savelev @ 2009-05-16 8:32 UTC (permalink / raw)
To: ALT Linux Team development discussions; +Cc: Alexey Tourbin
16 мая 2009 г. 12:23 пользователь Alexey Tourbin <at@altlinux.ru> написал:
> On Sat, May 16, 2009 at 11:56:21AM +0400, Max Ivanov wrote:
>> Добрый день! Как такое могло получиться: /usr/lib/mlt/libmltcore.so:
>> undefined symbol: pow
>> столько закручивали гайки, а оно всё равно вот такое пропускает.
>>
>> Пофиксил, отправил, вина моя и посыпаю голову пеплом. Но всё же, может
>> есть какой макрос, что б проверяло на эти самые undefined и не
>> пропускало?
>
> В "плагинах" в общем случае нельзя требовать чтобы все символы были
> непосредственно разрешены.
>
> $ ldd -r /usr/lib64/zsh/zpty.so |& head
> undefined symbol: mypid (/usr/lib64/zsh/zpty.so)
> undefined symbol: lines (/usr/lib64/zsh/zpty.so)
> undefined symbol: errflag (/usr/lib64/zsh/zpty.so)
> undefined symbol: scriptname (/usr/lib64/zsh/zpty.so)
> undefined symbol: coprocin (/usr/lib64/zsh/zpty.so)
> undefined symbol: columns (/usr/lib64/zsh/zpty.so)
> undefined symbol: contflag (/usr/lib64/zsh/zpty.so)
> undefined symbol: retflag (/usr/lib64/zsh/zpty.so)
> undefined symbol: breaks (/usr/lib64/zsh/zpty.so)
> undefined symbol: lastval (/usr/lib64/zsh/zpty.so)
> $
>
> Эти символы определны в /bin/zsh. Для этого /bin/zsh линкуется
> с флагом -rdynamic. Это такая легальная схема, почему в elf shared
> object могут допускаться undefined symbols.
>
> Макрос называется
> %set_verify_elf_method strict
>
а что означает "bad_elf_symbols"?
http://git.altlinux.org/tasks/6284/task/log
--
С уважением, Борис Савельев
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 8:32 ` Boris Savelev
@ 2009-05-16 8:43 ` Alexey Tourbin
2009-05-16 9:09 ` Boris Savelev
0 siblings, 1 reply; 12+ messages in thread
From: Alexey Tourbin @ 2009-05-16 8:43 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 997 bytes --]
On Sat, May 16, 2009 at 12:32:14PM +0400, Boris Savelev wrote:
> а что означает "bad_elf_symbols"?
> http://git.altlinux.org/tasks/6284/task/log
bad_elf_symbols означает глобальную проверку одновременно для всех
имеющихся бинариков в репозитарии. Она сбрабатывает только тогда,
когда какого-то символа вообще нигде нет. А если для undefined symbol
в одном бинарике имеется определение в каком-то другом бинарике, то
считается что всё нормально. То есть связи между бинариками она вообще
не анализирует.
Эта проверка работает так:
1) Составляет полный список определенных символов (def) для всех
бинариков в репозитарии.
2) Составляет полный список неопределенных/ссылочных символов (ref) для
всех бинариков в репозитарии.
3) Из ref вычитает def, результат называется bad_elf_symbols.
Наличие bad_elf_symbols обычно означает, что в бинарике содержатся
вызовы несуществующих функций. В момент вызова несуществующей функции
всё упадёт (а с LD_BIND_NOW=1 упадёт сразу же).
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 8:43 ` Alexey Tourbin
@ 2009-05-16 9:09 ` Boris Savelev
2009-05-16 9:21 ` Alexey Tourbin
0 siblings, 1 reply; 12+ messages in thread
From: Boris Savelev @ 2009-05-16 9:09 UTC (permalink / raw)
To: ALT Linux Team development discussions
16 мая 2009 г. 12:43 пользователь Alexey Tourbin <at@altlinux.ru> написал:
> On Sat, May 16, 2009 at 12:32:14PM +0400, Boris Savelev wrote:
>> а что означает "bad_elf_symbols"?
>> http://git.altlinux.org/tasks/6284/task/log
>
> bad_elf_symbols означает глобальную проверку одновременно для всех
> имеющихся бинариков в репозитарии. Она сбрабатывает только тогда,
> когда какого-то символа вообще нигде нет. А если для undefined symbol
> в одном бинарике имеется определение в каком-то другом бинарике, то
> считается что всё нормально. То есть связи между бинариками она вообще
> не анализирует.
>
> Эта проверка работает так:
> 1) Составляет полный список определенных символов (def) для всех
> бинариков в репозитарии.
> 2) Составляет полный список неопределенных/ссылочных символов (ref) для
> всех бинариков в репозитарии.
> 3) Из ref вычитает def, результат называется bad_elf_symbols.
>
> Наличие bad_elf_symbols обычно означает, что в бинарике содержатся
> вызовы несуществующих функций. В момент вызова несуществующей функции
> всё упадёт (а с LD_BIND_NOW=1 упадёт сразу же).
>
ааа. дело в том что символы есть, но бинарник с нужными символами не в
%_bindir, а в %_libdir/%name/
из-за этого проверка валится?
--
С уважением, Борис Савельев
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 9:09 ` Boris Savelev
@ 2009-05-16 9:21 ` Alexey Tourbin
2009-05-16 9:36 ` Boris Savelev
0 siblings, 1 reply; 12+ messages in thread
From: Alexey Tourbin @ 2009-05-16 9:21 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 2159 bytes --]
On Sat, May 16, 2009 at 01:09:10PM +0400, Boris Savelev wrote:
> 16 мая 2009 г. 12:43 пользователь Alexey Tourbin <at@altlinux.ru> написал:
> > On Sat, May 16, 2009 at 12:32:14PM +0400, Boris Savelev wrote:
> >> а что означает "bad_elf_symbols"?
> >> http://git.altlinux.org/tasks/6284/task/log
> >
> > bad_elf_symbols означает глобальную проверку одновременно для всех
> > имеющихся бинариков в репозитарии. Она сбрабатывает только тогда,
> > когда какого-то символа вообще нигде нет. А если для undefined symbol
> > в одном бинарике имеется определение в каком-то другом бинарике, то
> > считается что всё нормально. То есть связи между бинариками она вообще
> > не анализирует.
> >
> > Эта проверка работает так:
> > 1) Составляет полный список определенных символов (def) для всех
> > бинариков в репозитарии.
> > 2) Составляет полный список неопределенных/ссылочных символов (ref) для
> > всех бинариков в репозитарии.
> > 3) Из ref вычитает def, результат называется bad_elf_symbols.
> >
> > Наличие bad_elf_symbols обычно означает, что в бинарике содержатся
> > вызовы несуществующих функций. В момент вызова несуществующей функции
> > всё упадёт (а с LD_BIND_NOW=1 упадёт сразу же).
> >
> ааа. дело в том что символы есть, но бинарник с нужными символами не в
> %_bindir, а в %_libdir/%name/
> из-за этого проверка валится?
Нет. Лучше давайте конкретно что-то рассмотрим.
http://git.altlinux.org/tasks/6284/task/log
x86_64: NEW bad_elf_symbols detected:
monkeystudio-1.8.3.3-alt1.svn3087.x86_64.rpm /usr/lib64/monkeystudio/plugins/base/libAStyle.so U _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
Здесь говорится: файл /usr/lib64/monkeystudio/plugins/base/libAStyle.so
содержит вызов функции _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv.
Но эта функция нигде не определна, то есть не экспортируется ни в каком
другом бинарике.
В проверке bad_elf_symbols расположение файлов никак не влияет на
проверку. В проверке /usr/lib/rpm/verify-elf расположение файлов
влияет на проверку.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 9:21 ` Alexey Tourbin
@ 2009-05-16 9:36 ` Boris Savelev
2009-05-16 9:54 ` Alexey Tourbin
0 siblings, 1 reply; 12+ messages in thread
From: Boris Savelev @ 2009-05-16 9:36 UTC (permalink / raw)
To: ALT Linux Team development discussions
16 мая 2009 г. 13:21 пользователь Alexey Tourbin <at@altlinux.ru> написал:
> _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
objdump -T /usr/bin/monkeystudio | grep
_ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
081da6f6 g DF .text 00000039 Base
_ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
я видимо что-то не до конца понимаю-(
тем не менее, ничего не падает-))
--
С уважением, Борис Савельев
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 9:36 ` Boris Savelev
@ 2009-05-16 9:54 ` Alexey Tourbin
2009-05-16 10:17 ` Boris Savelev
0 siblings, 1 reply; 12+ messages in thread
From: Alexey Tourbin @ 2009-05-16 9:54 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1214 bytes --]
On Sat, May 16, 2009 at 01:36:11PM +0400, Boris Savelev wrote:
> 16 мая 2009 г. 13:21 пользователь Alexey Tourbin <at@altlinux.ru> написал:
> > _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
>
> objdump -T /usr/bin/monkeystudio | grep
> _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
> 081da6f6 g DF .text 00000039 Base
> _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
Давайте смотреть тот пакет который собрался.
$ rsync -vaP git.altlinux.org::tasks/6284 $TMPDIR/tasks/
...
$ cd $TMPDIR/tasks/6284
$ rpmpeek ./build/1/x86_64/rpms/monkeystudio-1.8.3.3-alt1.svn3087.x86_64.rpm objdump -T ./usr/lib64/monkeystudio/plugins/base/libAStyle.so |grep _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
0000000000000000 D *UND* 0000000000000000 _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
$ rpmpeek ./build/1/x86_64/rpms/monkeystudio-1.8.3.3-alt1.svn3087.x86_64.rpm objdump -T ./usr/bin/monkeystudio |grep _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
$
Вызов функции есть, самой функции нету. Вот и вся правда.
Почему оно так собралось я не знаю.
> я видимо что-то не до конца понимаю-(
> тем не менее, ничего не падает-))
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 9:54 ` Alexey Tourbin
@ 2009-05-16 10:17 ` Boris Savelev
0 siblings, 0 replies; 12+ messages in thread
From: Boris Savelev @ 2009-05-16 10:17 UTC (permalink / raw)
To: ALT Linux Team development discussions
16 мая 2009 г. 13:54 пользователь Alexey Tourbin <at@altlinux.ru> написал:
> On Sat, May 16, 2009 at 01:36:11PM +0400, Boris Savelev wrote:
>> 16 мая 2009 г. 13:21 пользователь Alexey Tourbin <at@altlinux.ru> написал:
>> > _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
>>
>> objdump -T /usr/bin/monkeystudio | grep
>> _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
>> 081da6f6 g DF .text 00000039 Base
>> _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
>
> Давайте смотреть тот пакет который собрался.
>
> $ rsync -vaP git.altlinux.org::tasks/6284 $TMPDIR/tasks/
> ...
> $ cd $TMPDIR/tasks/6284
> $ rpmpeek ./build/1/x86_64/rpms/monkeystudio-1.8.3.3-alt1.svn3087.x86_64.rpm objdump -T ./usr/lib64/monkeystudio/plugins/base/libAStyle.so |grep _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
> 0000000000000000 D *UND* 0000000000000000 _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
> $ rpmpeek ./build/1/x86_64/rpms/monkeystudio-1.8.3.3-alt1.svn3087.x86_64.rpm objdump -T ./usr/bin/monkeystudio |grep _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv
> $
>
> Вызов функции есть, самой функции нету. Вот и вся правда.
> Почему оно так собралось я не знаю.
>
все. теперь дошло, что это воспроизводится только на х86_64
спасибо.
--
С уважением, Борис Савельев
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] Как пролезли undefined symbol?
2009-05-16 8:23 ` Alexey Tourbin
2009-05-16 8:32 ` Boris Savelev
@ 2009-05-16 9:49 ` Max Ivanov
2009-05-16 9:52 ` Mikhail Gusarov
1 sibling, 1 reply; 12+ messages in thread
From: Max Ivanov @ 2009-05-16 9:49 UTC (permalink / raw)
To: ALT Linux Team development discussions
>
> Эти символы определны в /bin/zsh. Для этого /bin/zsh линкуется
> с флагом -rdynamic. Это такая легальная схема, почему в elf shared
> object могут допускаться undefined symbols.
>
> Макрос называется
> %set_verify_elf_method strict
В каком разделе wiki это лучше описать? SpecTips?
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2009-05-16 10:17 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-16 7:56 [devel] Как пролезли undefined symbol? Max Ivanov
2009-05-16 8:00 ` Damir Shayhutdinov
2009-05-16 8:23 ` Alexey Tourbin
2009-05-16 8:32 ` Boris Savelev
2009-05-16 8:43 ` Alexey Tourbin
2009-05-16 9:09 ` Boris Savelev
2009-05-16 9:21 ` Alexey Tourbin
2009-05-16 9:36 ` Boris Savelev
2009-05-16 9:54 ` Alexey Tourbin
2009-05-16 10:17 ` Boris Savelev
2009-05-16 9:49 ` Max Ivanov
2009-05-16 9:52 ` Mikhail Gusarov
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git