Salamander někdy neodemkne adresář pro jeho smazání

Hlášení chyb a problémů programu Altap Salamander. Buďte, prosím, ve svých popisech co nejpodrobnější a vytvořte pro každý incident nový příspěvek. Nevkládejte programem generovaná hlášení o pádu programu, pošlete je e-mailem.
padik

Salamander někdy neodemkne adresář pro jeho smazání

Post by padik »

Při použití níže uvedeného postupu Salamander nesmaže adresář.

1. vytvořím adresář "c:\pokus"
2. zkopíruji tam jakýkoliv exe, např. "calc.exe" z windows
3. ten program spustím a po naběhnutí zavřu.
4. chci zmazat celý adresář "c:\pokus" a objeví se chybová hláška,
že soubor používá jiný proces. Je smazán jen ten exe soubor.

Buď musím Salamander ukončit a znovu zpustit a nebo použít program UNLOCKER pro odemčení procesu a smazání toho adresáře.
Toto pozoruji na systému win2000 sp4 i winXP sp2, mám tam admin práva a disk je naformátován na FAT32.
Dělá to SS 2.0 i SS 2.5 beta 11. (Total Comander 6.52 na stejném počítači to nedělá.)

Mazání mám nastaveno na přímé bez použití koše.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

Můžete prosím pro zajímavost vedle programů Servant Salamander a Total Commander otestovat Váš postup také ve Windows Explorer?

Pro odstranění problému musíme zjistit, která knihovna (DLL) "zapoměla" otevřený handle. Můžete provést kroky podle následujícího návodu?

http://www.altap.cz/salam_en/faulty_she ... sions.html
(v tomto případě jde o kapitolku 1.2)
User avatar
Mem
Posts: 202
Joined: 08 Mar 2006, 15:07
Contact:

Post by Mem »

Pro zajímavost to také vyzkouším, jen chci potvrdit, že se mi to už taky párkrát stalo, byly to instalace různých utilit, dočasně rozbalené archivy apod. Musel jsem vždy SS zavřít, znovu pustit, a potom už adresář smazat šlo.

P.S.: Takže přímo ten postup s calc.exe apod. mi chybu nezpůsobí, tj. jakmile je proces ukončen nebo aplikace editující dokument uzavřená, tak už adresář smazat lze, kdybych objevil nějakou, kde to nejde, pošlu seznam knihoven. Windows XP (5.1.2600) SP2 CS
Rada
Posts: 43
Joined: 09 Dec 2005, 16:34
Location: Brno, Česko

Post by Rada »

Dá se na to přijít použitím utilitky "WhoLockMe?"
v kontextovem menu souboru nebo adresare který nejde smazat se da položka Who Lock Me a objevi se ktera aplikace ho vyuziva..
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

POZOR, následuje ošklivý, rozvleklý a technický příspěvek. Pouze pro otrlé uživatele :)

Pokud stačí Salamandera ukončit/znovu spustit, aby zámky povolily (popisovaný případ), pocházely zámky z procesu Salamandera a UNLOCKER, WhoLockMe a spol. nic bližšího neprozradí.

Pokusím se popsat k čemu dochází: některé funkce Salamandera volají služby operačního systému, které se vykonají prostřednictvím tzv. Shell Extensions. Jde o speciální DLL knihovny určené k rozšiřování prostředí Windows. Tyto knihovny se spouštějí v procesu, který zavolal některou z inkriminovaných funkcí operačního systému. V našem případě je to Salamander.

Dva příklady Shell Extension:
1) Rozšíření kontextového menu: uživatel klikne pravým tlačítkem na souboru a v rozbalené nabídce je položka archivátoru 7-Zip, která nabízí zabalení souboru do archivu. Již při otevírání nabídky operační systém požádal Shell Extension od programu 7-Zip, aby nabídku rozšířila o své položky. Pokud si uživatel jeden z nabídnutých příkazů zvolí, je na Shell Extension, aby patřičnou činnost vykonala (v tomto případě iniciovala zabalení souboru do archivu).

2) Poskytování ikonek: v panelu uživatel zobrazí adresář obsahující soubory, které obsahují grafiku (bitmapy, vektory). Speciální Shell Extension pro každý tento soubor připraví zmenšeninu obrázku, kterou vrátí jako ikonku. Uživatel má tak představu, co je uvnitř souboru.

Existuje celá řada Shell Extensions, jedná se o běžnou součást programů. Od malých open source projektů jako je 7-Zip, po velké aplikace typu Adobe Photoshop, Adobe Illustrator nebo Corel Draw.

Pokud je v Shell Extension "chyba" a knihovna například po vytvoření ikonky zapomene zavřít handle (zámek) k souboru, projeví se problém až ve chvíli, kdy se uživatel pokusí soubor smazat. Vypadá to, že handle zapomněl zavřít Salamander (po jeho ukončení soubor již smazat lze). Pokud je v Shell Extension vážnější chyba a knihovna "spadne", spadne z hlediska uživatele Salamander. Někdy se vadná Shell Extension projevuje pouze zpožděním (několik vteřin) při otevírání kontextového menu.

Jak dohledáváme tyto vadné Shell Extensions: využíváme diagnostické funkce Salamandera (menu Help > Report a Bug), která zobrazí seznam DLL knihoven načtených v jeho procesu. Shell Extensions se naštěstí do procesu načítají až ve chvíli, kdy jsou potřeba (otevírá se kontextové menu, zobrazuje se ikonka souboru, atd.). Pokud tedy pořídíme seznam DLL knihoven z "čistého" Salamandera (těsně po spuštění, pokud možno oba panely v prázdných adresářích, aby se nenačetly ikonky), následně reprodukujeme problém (navodíme stav, kdy nelze smazat soubor) a znovu pořídíme seznam načtených DLL knihoven, lze tyto dva seznamy porovnat. Některá z nově načtených knihoven (Shell Extensions) je pravděpodobně příčinou problému.

Shell Extension lze celkem jednoduše potlačit: přejmenujeme knihovnu (například připojíme podtržítko) a restartujeme Windows. Potom zkusíme, zda problém zmizel. Pokud ne, přejmenujeme knihovnu zpět a ta začne samovolně fungovat (je registrována v Registry).

Právě vyhledáváním problematických Shell Extensions se zabývá tento náš text: http://www.altap.cz/salam_en/faulty_she ... sions.html

Problémy spojené s Shell Extensions, které se projevují v programu Servant Salamander, se často projevují také v případě programu Windows Explorer. Nemusí to však platit vždy, záleží na implementaci konkrétní Shell Extension.

Pokud máte zájem do problematiky hlouběji nahlédnout z hlediska uživatele, mrkněte na tento pěkný nástroj: http://www.nirsoft.net/utils/shexview.html
Stránka popisující problematiku z hlediska programu Windows Explorer: http://windowsxp.mvps.org/slowrightclick.htm
A na závěr problematika Shell Extensions z pohledu vývojáře: MSDN.

S problémem vadných Shell Extensions zápasíme roky, omluvte proto tento rozvleklý příspěvek. Byl bych rád, kdyby uživatelé měli možnost pochopit jádro problému. Pokud je něco nejasně popsáno, klidně se ptejte.
User avatar
jis
Posts: 451
Joined: 27 Jan 2006, 23:14
Location: Prague, Czech Republic

Re: Salamander někdy neodemkne adresář pro jeho smazání

Post by jis »

Altap Salamander fan since 1998
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Salamander někdy neodemkne adresář pro jeho smazání

Post by Jan Rysavy »

jis wrote:To samé se řeší i zde: Directory locked after launching file in directory
Děkuji za připomenutí, to mi uniklo...
User avatar
Mem
Posts: 202
Joined: 08 Mar 2006, 15:07
Contact:

Post by Mem »

A minimálně já děkuji za vyčerpávající popis funkcionality shell extensions, zase jsem o něco chytřejší :-)
padik

Post by padik »

Jan Rysavy wrote: Pro odstranění problému musíme zjistit, která knihovna (DLL) "zapoměla" otevřený handle. Můžete provést kroky podle následujícího návodu?

http://www.altap.cz/salam_en/faulty_she ... sions.html
(v tomto případě jde o kapitolku 1.2)
Tak mi to dělal Corel versions jak je uveden v kapitole 2. Po jeho odinstalaci se chyba neprojevuje.
Zajímavé je, že naprosto stejně mám Corel Draw 8 CZ nainstalován i na počítači s windows 98SE a tam chyba s mazáním nebyla.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

padik wrote:Tak mi to dělal Corel versions jak je uveden v kapitole 2. Po jeho odinstalaci se chyba neprojevuje.
Zlobilo to i s Windows Explorer?
padik wrote:Zajímavé je, že naprosto stejně mám Corel Draw 8 CZ nainstalován i na počítači s windows 98SE a tam chyba s mazáním nebyla.
To je normální, knihovny (Shell Extensions) se zkrátka mohou pro každým operačním systémem chovat jinak.
padik

Post by padik »

Jan Rysavy wrote:
padik wrote:Tak mi to dělal Corel versions jak je uveden v kapitole 2. Po jeho odinstalaci se chyba neprojevuje.
Zlobilo to i s Windows Explorer?
Ne, windows explorer ani TC to nedělal. A zapoměl jsem, že UNLOCKER hlásil zamčený proces v Salamanderovi.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

padik wrote:Ne, windows explorer ani TC to nedělal. A zapoměl jsem, že UNLOCKER hlásil zamčený proces v Salamanderovi.
I to je normální, ve hře je mnoho faktorů. Normální je také to, že soubory má zamčené Salamander, viz rozsáhlý popis fungování Shell Extensions nahoře.

Pro zajímavost uvedu odkaz na člověka se stejným problémem, kterému však zlobil Windows Explorer: http://www.experts-exchange.com/Operati ... 80703.html
koutnak
Posts: 10
Joined: 29 Jan 2006, 01:59
Location: Ostrava, Czech Repuplic

Post by koutnak »

Jan Rysavy wrote:Můžete prosím pro zajímavost vedle programů Servant Salamander a Total Commander otestovat Váš postup také ve Windows Explorer?

Pro odstranění problému musíme zjistit, která knihovna (DLL) "zapoměla" otevřený handle. Můžete provést kroky podle následujícího návodu?

http://www.altap.cz/salam_en/faulty_she ... sions.html
(v tomto případě jde o kapitolku 1.2)
Právě se mi stalo, že nešel vymazat adresář, a to ani v Exploreru, ani po restartu Salamandra. Až restart PC toto vyřešil. Provedl jsem kroky dle výše odkazovaného návodu (doufám že správně, ona angličtina není bohužel tím správným jazykem pro mne), ale nejsem schopen vyhodnotit výsledek. Můžu někam poslat ty dva soubory, ať se na ně podívá někdo kvalifikovanější?
Koutňák
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

Pokud nepomohlo ukončení/nové spuštění Salamandera, měl adresář zamčený jiný běžící proces. Horkým kandidátem je Windows Explorer, kterého lze ze správce úloh ukončit a následně znovu spustit explorer.exe (například z běžícího Salamandera). Problémy s Shell Extensions se ostatně primárně týkají tohoto programu.

Pokud problém dokážete reprodukovat, zkuste mi na email poslat zmíněné dva textové soubory (jeden exportovaný ihned po spuštění Salamandera a jeden po nějaké akci, například otevření souboru z daného adresáře).

Zkuste také citovaný UNLOCKER ( http://ccollomb.free.fr/unlocker/ ), který umí zobrazit, který proces má daný adresář zamčený. Dejte nám vědět :)
koutnak
Posts: 10
Joined: 29 Jan 2006, 01:59
Location: Ostrava, Czech Repuplic

Post by koutnak »

Reprodukovat to nedokážu. Prostě se to někdy stane. Není to pro mě takový problém, abych kvůli tomu používal nějaké utility pro odemčení, apod. Prostě mazání při příštím spuštění PC dokončím. Soubory pošlu na Váš mail, ale na jaký?
Koutňák
Post Reply