[linux] tuhne convert z ImageMagick

Juraj Variny rini17 na gmail.com
Neděle Říjen 7 21:12:02 CEST 2007


Ahoj,

kedze linux sa drzi unixovej tradicie tak subor otvoreny nejakym programom 
nechava nedotknuty pri vymazani (a ten program sa o tom vobec nedozvie ze 
robi s vymazanym suborom). Subor sa ale da skratit (napriklad prikaz cat > 
subor to robi), a ano, ma to podobny efekt aky si vy predstavujete. Cize 
rychle riesenie by mohlo byt subory neprepisovat na mieste ale najprv vymazat 
a vytvorit nove. Tymto je napriklad umoznene napriklad bezproblemove 
nahradenie akychkolvek systemovych suborov za behu systemu na rozdiel od 
Windows. Ale ak chcete pomoct opravit potencialnu chybu zneuzitelnu na DoS 
utok tak citajte dalej:

Pravidlo je ze KAZDE volanie read() treba okontrolovat ci nieco vrati a ci nie 
sme na konci suboru. Ak vrati nulu tak to treba inteligentne spracovat. Ked 
si nejaky program mysli ze "tu jednoducho MUSI byt 4096 bajtov a budem sa ich 
donekonecna pokusat nacitavat az kym sa tam neobjavia" tak to je na 95% bug v 
convert-e a na 5% bug niekde inde v systeme (libpng, libc,  jadro, HW,...). 
To sa da riesit jedine tak ze:

0. skusit reprodukovat na novsej verzii Imagemagick / inej distribucii / inom 
HW 
1. ak to blbne vsade, zozente si convert s debugovacimi symbolmi (ak taky nie 
je nainstalovany)
2. spustite ho normalne a ked nastane tento problem, pripojite sa nan s gdb
3. stopnete ho v gdb a vypytate si stacktrace
4. poslete tento stacktrace a popis chyby vyvojarom imagemagick, alebo vasej 
distribucie (ak mate na nu nejaky support kontrakt)

Ak nemate skusenosti s 1-4 ale budete odhodlany to takto riesit, urcite vam aj 
tuna blizsie pomozeme..

Juraj


On Friday 05 October 2007, iko wrote:
> zdravim,
>
> mam spraveny skript, kde kazdych 5 minut pustam postupne convert na asi
> 200 suborov png. robim z netransparentneho png na transparentny:
> convert subor.png -transparent #E0E0E0 subor2.png
>
> raz za cas sa mi ale stane, ze sa convert zasekne, zere 100% procesora a
> pomoze mu len KILL.
>
> strace na ten zaseknuty proces:
> ...
> read(3, "", 4096)                       = 0
> read(3, "", 4096)                       = 0
> read(3, "", 4096)                       = 0
> read(3, "", 4096)                       = 0
> read(3, "", 4096)                       = 0
> read(3, "", 4096)                       = 0
> ...
>
> OS: centos 3
> ImageMagick 5.5.6 04/01/03 Q16
>
> netusite niekto, kde moze byt problem? teoreticky sa moze stat, ze subor
> sa zmaze prv nez zacne convert pracovat, alebo ze sa mu zmaze pod
> rukami. stava sa to nahodne, tak to neviem odsledovat.
>
> iko



Další informace o konferenci linux