From: Alexey Tourbin <at@altlinux.ru> To: devel@lists.altlinux.org Cc: "George V. Kouryachy" <george@altlinux.org> Subject: [devel] FAILED q-core.git=7.11-alt1 (bad_elf_symbols, ImageMagick) Date: Tue, 24 Feb 2009 20:16:01 +0300 Message-ID: <20090224171601.GN31985@altlinux.org> (raw) [-- 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 --]
reply other threads:[~2009-02-24 17:16 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20090224171601.GN31985@altlinux.org \ --to=at@altlinux.ru \ --cc=devel@lists.altlinux.org \ --cc=george@altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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