[PATCH 4/4] shell32: Avoid a deadlock between explorer.exe and winemenubuilder.exe.

Zebediah Figura z.figura12 at gmail.com
Wed Nov 29 16:50:55 CST 2017


On 11/29/2017 02:21 PM, Alexandre Julliard wrote:
> Zebediah Figura <z.figura12 at gmail.com> writes:
> 
>> Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
>> ---
>> This is an anticipatory change. Creating shell links from Progman (i.e.
>> explorer.exe) will cause a deadlock if the icon is missing or (as in the tests)
>> the link is immediately deleted.
> 
> Checking the module name is pretty hackish. Also the check can't work
> anyway, because GetModuleFileNameW returns a full path.
> 

Could I request an opinion on the best way to solve this problem?

* The process that creates the link could be explorer, if the process 
uses the Progman DDE interface. Additionally (though perhaps improbably) 
it could be a different process than the one that creates the icon. I 
have a hard time thinking 5e28f7ad92e39bdd75cf291e22b7ebae00032e60 was a 
correct step.
* More correct than waiting on the process handle would be waiting on 
the icon file itself using FindFirstChangeNotification() etc, but we 
can't depend on the icon ever being created.
* Reverting 5e28f7a and using a RunOnce entry does have the disadvantage 
that it might never be run. I would personally imagine it acceptable to 
at least fix it so the link is created (if not the icon) but others 
might disagree. It would also be better if we could run winemenubuilder 
on Wine "shutdown" rather than the next startup, assuming this is 
possible. Would this solution be acceptable?



More information about the wine-devel mailing list