Huang, Zhangrong wrote: > Hi, > > 2008/7/3 Maarten Lankhorst <[EMAIL PROTECTED]>: >> Hello, >> I think that is a bad idea, while there might be 1 or 2 real genuine >> uses for only throwing an exception while debugging, 99% of the time >> it's really wine deadlocking itself, it's wine's own fault and I would >> rather see the backtraces of the deadlock rather then the app hanging >> forever. > > OK, my thoughts: > > 1. A patch for Wine that throws exception for Wine internal locks only > when debug is present, so after waiting for 65 seconds, some apps > don't crash. Of course if you run app under debugger, you get > exception to check deadlock. > > 2. Another patch to implement the missing timeout feature, Wine checks > the timeout value NtCurrentTeb()->Peb->CriticalSectionTimeout which > comes from registry > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session > Manager\CriticalSectionTimeout, then throws EXCEPTION_POSSIBLE_DEADLOCK.. > So if you want to check deadlock, setting the registry value to 30 > seconds or 60 seconds or any value you want. > >
Using something like this in Wine currently is ill advised. For example crit-sections in sound drivers will timeout when some games load next level on a slow hardware. However everything is functioning properly after game is loaded. Generating an exception will most likely cause app to crash/exit. This can be the case for number of other resources protected with crit-sections. Vitaliy.
