Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разные вопросы > У меня сломался Imagick |
Автор: IgorIV 12.1.2011, 21:57 | ||||||
Не нашел раздела более подходящего. Итак, проблема. Дано. FreeBSD 8.0-RELEASE ImageMagick-6.6.6.10 pecl-imagick-3.0.1 png-1.4.5 В результате какого-то обновления сломался частично Imagick. Не читает файлы png. Совсем. jpg и gif читает. Попытался сделать downgrade порта ImageMagick, есть подозрение на него. Не получилось. Версия 6.6.4 требует библиотеку libltdl22, но такой нет. Она была упразднена месяц назад. Пытаюсь разобратся в коде Imagick. Вот такой код приводит к ошибке
Ошибка такая -
Метод выглятид так
Подскажите как добратся до места в котором читается именно файл. Чтобы понять что не так работает. |
Автор: IgorIV 13.1.2011, 20:36 |
Озвучьте хоть какие идеи ![]() |
Автор: oleantus 14.1.2011, 13:00 |
Здравствуйте, Нашлось ли решение данной проблемы? У меня такая же ситуация, не понятно из-за чего такое произошло. Есть две практически одинаковые машины: FreeBSD 8.1 Stable png-1.4.5 ImageMagick-6.6.6.10 Один и тот же perl-скрипт на одной машине с png работает нормально, на другой вылетает аналогичный exception (Exception 425: corrupt image `' @ error/png.c/ReadPNGImage/3128) в коде: my $status = $image -> BlobToImage($$data); Переменная $data содержит ссылку на png-данные. Там где работает используется perl-5.10, там где не работает - perl-5.12. Но я думаю, что дело не в версии perl, хотя кто знает. Машины обновляются регулярно, но не одновременно, поэтому не могу сказать, когда точно перестало работать на одной из машин :( Хотелось бы тоже найти решение данной проблемы. |
Автор: IgorIV 14.1.2011, 19:19 |
У меня подозрение на ImageMagick, где-то 90%. Потому как imagick не обновлялся давно. png тоже. А ИМ почти каждый месяц. Сегодня попробую еще раз сделать даунгрейд портов. Просто у меня машина более-менее обновляется. На сервисе в интернете, где все работает версия ИМ - 6.6.2 |
Автор: oleantus 14.1.2011, 21:49 |
Дело в том, что у меня на обеих машинах ImageMagick 6.6.6.10 и png-1.4.5. А ошибка только на одной из них, на другой все работает нормально. Вообще реально у меня на этих машинах различие только в версиях perl. |
Автор: IgorIV 14.1.2011, 23:05 |
Да?! Тогда давай pkg_version -v perl -V Тогда есть еще одна мысля. Но честно говоря, на нее даже и не думал. |
Автор: oleantus 15.1.2011, 00:15 |
Все! У меня проблема решилась. Как я и предполагал - дело было в perl. Сделал downgrade до perl 5.10 и пересобрал все порты, зависящие от perl, в том числе и ImageMagick. В итоге теперь все работает. Но все равно волнует вопрос, почему же под perl 5.12 не работало? |
Автор: IgorIV 15.1.2011, 01:22 |
oleantus, поделись командами. |
Автор: oleantus 15.1.2011, 01:30 |
Я через portupgrade делал: pkgdb -Ff env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.10 -f perl-5.12.\* portupgrade -fr perl Некоторые порты не пересобрались, пересобрал каждый по отдельности, для каждого порта запускал make deinstall reinstall clean |
Автор: IgorIV 15.1.2011, 09:15 |
oleantus, я имел ввиду perl -V |
Автор: oleantus 15.1.2011, 12:11 |
perl -V Summary of my perl5 (revision 5 version 10 subversion 1) configuration: Platform: osname=freebsd, osvers=8.1-stable, archname=amd64-freebsd config_args='-sde -Dprefix=/usr/local -Darchlib=/usr/local/lib/perl5/5.10.1/mach Dprivlib=/usr/local/lib/perl5/5.10.1 -Dman3dir=/usr/local/lib/perl5/5.10.1/perl/man/man3 -Dman1dir=/usr/local/man/man1 -Dsitearch=/usr/local/lib/perl5/site_perl/5.10.1/mach -Dsitelib=/usr/local/lib/perl5/site_perl/5.10.1 -Dscriptdir=/usr/local/bin -Dsiteman3dir=/usr/local/lib/perl5/5.10.1/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Ui_malloc -Ui_iconv -Uinstallusrbinperl -Dcc=cc -Duseshrplib -Dinc_version_list=none -Dccflags=-DAPPLLIB_EXP="/usr/local/lib/perl5/5.10.1/BSDPAN" -Doptimize=-g -DDEBUGGING -Ud_dosuid -Ui_gdbm -Dusethreads=n -Dusemymalloc=y -Duse64bitint' hint=recommended, useposix=true, d_sigaction=define useithreads=undef, usemultiplicity=undef useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=y, bincompat5005=undef Compiler: cc='cc', ccflags ='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.10.1/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include', optimize='-g', cppflags='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.10.1/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include' ccversion='', gccversion='4.2.1 20070719 [FreeBSD]', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -Wl,-E -fstack-protector -L/usr/local/lib' libpth=/usr/lib /usr/local/lib libs=-lgdbm -lm -lcrypt -lutil perllibs=-lm -lcrypt -lutil libc=, so=so, useshrplib=true, libperl=libperl.so gnulibc_version='' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' -Wl,-R/usr/local/lib/perl5/5.10.1/mach/CORE' cccdlflags='-DPIC -fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector' Characteristics of this binary (from libperl): Compile-time options: DEBUGGING MYMALLOC PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO Built under freebsd Compiled at Jan 14 2011 22:43:20 @INC: /usr/local/lib/perl5/5.10.1/BSDPAN /usr/local/lib/perl5/site_perl/5.10.1/mach /usr/local/lib/perl5/site_perl/5.10.1 /usr/local/lib/perl5/5.10.1/mach /usr/local/lib/perl5/5.10.1 . |
Автор: IgorIV 16.1.2011, 00:00 |
Спасибо. А на втором? |
Автор: oleantus 16.1.2011, 11:44 |
На обеих машинах теперь одинаково. Там, где раньше был perl 5.12, я не посмотрел. |
Автор: IgorIV 16.1.2011, 12:53 |
oleantus, еще раз спасибо! Был перл 5.8, переделал на 5.10 и пересобрал 319 портов. Теперь работает. ![]() |