* [devel] FAILED q-core.git=7.11-alt1 (bad_elf_symbols, ImageMagick)
@ 2009-02-24 17:16 Alexey Tourbin
0 siblings, 0 replies; only message in thread
From: Alexey Tourbin @ 2009-02-24 17:16 UTC (permalink / raw)
To: devel; +Cc: George V. Kouryachy
[-- Attachment #1: Type: text/plain, Size: 4824 bytes --]
[#1435] FAILED q-core.git=7.11-alt1
http://lists.altlinux.org/pipermail/sisyphus-incominger/2009-February/225763.html
[#1524] FAILED q-core.git=7.11-alt1
http://lists.altlinux.org/pipermail/sisyphus-incominger/2009-February/225839.html
i586: NEW bad_elf_symbols detected:
q-core-7.11-alt1.i586.rpm /usr/lib/q/magick.so U ScaleQuantumToShort
q-core-7.11-alt1.i586.rpm /usr/lib/q/magick.so U ScaleShortToQuantum
i586: old bad_elf_symbols resolved:
transcode-1.0.7-alt2.i586.rpm /usr/lib/transcode/import_xml.so U filetype
x86_64: NEW bad_elf_symbols detected:
q-core-7.11-alt1.x86_64.rpm /usr/lib64/q/magick.so U ScaleQuantumToShort
q-core-7.11-alt1.x86_64.rpm /usr/lib64/q/magick.so U ScaleShortToQuantum
x86_64: old bad_elf_symbols resolved:
transcode-1.0.7-alt2.x86_64.rpm /usr/lib64/transcode/import_xml.so U filetype
2009-Feb-24 17:56:15 :: ELF symbols check FAILED
Эта диагностика означает следующее. В файле /usr/lib64/q/magick.so
содержится вызов функций ScaleQuantumToShort и ScaleShortToQuantum.
Эти функции нигде не определены. Следовательно, при определенных code
paths (то есть при определенных условиях выполнения программы) это
приводит к падению приложения; а при некоторых других условиях
приложение упадёт ASAP -- может быть, даже не загрузится.
(С "filetype" дело обстоит несколько сложнее, но "filetype" не влияет
на результат проверки, поскольку не находится в секции "NEW".)
Посмотрим на лог сборки пакета
http://git.altlinux.org/tasks/1524/build/1/x86_64/log
magick.c: In function 'get_pixels':
magick.c:781: warning: implicit declaration of function 'ScaleQuantumToShort'
magick.c: In function 'set_pixels':
magick.c:810: warning: implicit declaration of function 'ScaleShortToQuantum'
verify-elf: WARNING: ./usr/lib64/q/magick.so: undefined symbol: ScaleShortToQuantum
verify-elf: WARNING: ./usr/lib64/q/magick.so: undefined symbol: ScaleQuantumToShort
В логе сборки дважды выводятся те же самые по сути предупреждения,
которые потом перехватываются проверкой bad_elf_symbols. Все эти
проверки работают на разных уровнях: на уровне компиляции исходника,
на уровне локальной проверки файла с помощью ldd, в конце на уровне
глобальной проверки разрешимости символов. Результат одинаковый:
нет таких функций.
Вот часть исходника.
Здесь что-то не так с ImageMagick API.
q-7.11/modules/magick/magick.c:
...
68 #if MagickLibVersion < 0x550
69 #define ScaleQuantumToChar(quantum) Downscale(quantum)
70 #define PixelIntensityToQuantum(color) Intensity(color)
71 #define RLECompression RunlengthEncodedCompression
72 #define ScaleCharToQuantum(value) Upscale(value)
73 #define ScaleShortToQuantum(value) XDownscale(value)
74 #define ScaleQuantumToShort(quantum) XUpscale(quantum)
75 #endif
...
465 static void get_pixels(unsigned char *dest, PixelPacket *source,
466 unsigned long count, unsigned matte)
467 {
468 unsigned long i;
469 register PixelPacket *p;
470 register unsigned short *q;
471
472 p = source;
473 q = (unsigned short*)dest;
474 if (matte)
475 for (i = 0; i < count; i++) {
476 *q++=ScaleQuantumToShort(p->red);
477 *q++=ScaleQuantumToShort(p->green);
478 *q++=ScaleQuantumToShort(p->blue);
479 *q++=ScaleQuantumToShort(MaxRGB-p->opacity);
480 p++;
481 }
482 else
483 for (i = 0; i < count; i++) {
484 *q++=ScaleQuantumToShort(p->red);
485 *q++=ScaleQuantumToShort(p->green);
486 *q++=ScaleQuantumToShort(p->blue);
487 *q++=ScaleQuantumToShort(MaxRGB);
488 p++;
489 }
490 }
491
492 /* Write RGBA pixels to a buffer. */
493
494 static void set_pixels(PixelPacket *dest, unsigned char *source,
495 unsigned long count, unsigned matte)
496 {
497 unsigned long i;
498 register unsigned short *p;
499 register PixelPacket *q;
500
501 p = (unsigned short*)source;
502 q = dest;
503 if (matte)
504 for (i = 0; i < count; i++) {
505 q->red=ScaleShortToQuantum(*p++);
506 q->green=ScaleShortToQuantum(*p++);
507 q->blue=ScaleShortToQuantum(*p++);
508 q->opacity=ScaleShortToQuantum(0xffff-*p++);
509 q++;
510 }
511 else
512 for (i = 0; i < count; i++) {
513 q->red=ScaleShortToQuantum(*p++);
514 q->green=ScaleShortToQuantum(*p++);
515 q->blue=ScaleShortToQuantum(*p++);
516 p++;
517 q++;
518 }
519 }
...
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-02-24 17:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-24 17:16 [devel] FAILED q-core.git=7.11-alt1 (bad_elf_symbols, ImageMagick) Alexey Tourbin
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