[#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 } ...