Comment #7 on issue 19276 by hc...@chromium.org: Browser hangs very  
frequently during video hardware configuration testing
http://code.google.com/p/chromium/issues/detail?id=19276

I isolated the dead lock to PCMWaveOutAudioOutputStream and created a test  
can easily
reproduce such dead lock:

1. Apply attached patch file (dead_lock.patch)
2. Build media_unittests
3. Connect to a remote computer with above steps 1 - 5
4. run: media_unittests --gtest_filter=WinAudioTest.PCMWaveStreamDeadLock  
in the
debugger

You'll notice a dead lock pretty easily.

Here's the stack trace I captured:

<< Thread name: testing::internal::FunctionMockerBase<void  
__cdecl(bool)>::InvokeWith      
PCMWaveOutAudioOutputStream::Start      Normal  0 >>

        ntdll.dll!7c90e514()    
        [Frames below may be incorrect and/or missing, no symbols loaded for
ntdll.dll]      
        ntdll.dll!7c90df5a()    
        ntdll.dll!7c91b24b()    
        kernel32.dll!7c80262a()         
        kernel32.dll!7c802600()         
        kernel32.dll!7c809f00()         
        ntdll.dll!7c901046()    
        rdpsnd.dll!5dac1d9e()   
        rdpsnd.dll!5dac14a8()   
        winmm.dll!76b455b2()    
        winmm.dll!76b45aa7()    
        msacm32.drv!72d11502()  
        msacm32.drv!72d112de()  
        winmm.dll!76b455b2()    
        winmm.dll!76b45aa7()    
>       
media_unittests.exe!PCMWaveOutAudioOutputStream::Start(AudioOutputStream::AudioSource
Callback * callback=0x0012fc7c)  Line 159 + 0x15 bytes  C++
        media_unittests.exe!WinAudioTest_PCMWaveStreamDeadLock_Test::TestBody() 
  
Line
493 + 0x13 bytes        C++
        media_unittests.exe!testing::Test::Run()  Line 2031 + 0xf bytes C++
        media_unittests.exe!testing::internal::TestInfoImpl::Run()  Line 2291   
C++
        
media_unittests.exe!testing::internal::TestInfoImpl::RunTest(testing::TestInfo  
*
test_info=0x011d9d08)  Line 656 C++
        media_unittests.exe!testing::internal::List<testing::TestInfo
*>::ForEach<void (__cdecl*)(testing::TestInfo *)>(void (testing::TestInfo  
*)*
functor=0x00709f60)  Line 397 + 0x10 bytes      C++
        media_unittests.exe!testing::TestCase::Run()  Line 2384 C++
        media_unittests.exe!testing::TestCase::RunTestCase(testing::TestCase *
test_case=0x011d81e8)  Line 776 + 0xb bytes     C++
        media_unittests.exe!testing::internal::List<testing::TestCase
*>::ForEach<void (__cdecl*)(testing::TestCase *)>(void (testing::TestCase  
*)*
functor=0x0070da20)  Line 397 + 0x10 bytes      C++
        media_unittests.exe!testing::internal::UnitTestImpl::RunAllTests()  
Line  
3674    
C++
        media_unittests.exe!testing::UnitTest::Run()  Line 3394 + 0xb bytes     
C++
        media_unittests.exe!TestSuite::Run()  Line 69 + 0xc bytes       C++
        media_unittests.exe!main(int argc=2, char * * argv=0x011c3f30)  Line 8 
+  
0x17
bytes   C++
        media_unittests.exe!__tmainCRTStartup()  Line 327 + 0x19 bytes  C
        media_unittests.exe!mainCRTStartup()  Line 196  C
        kernel32.dll!7c817077()         
        media_unittests.exe!std::_Vector_const_iterator<int,std::allocator<int>
> ::operator+=(int _Off=6488175)  Line 150 + 0x1b bytes C++
        media_unittests.exe!GTestStreamToHelper<char const
[28]>(std::basic_ostream<char,std::char_traits<char> > * os=0x00730065,  
const char
[28]& val=0x006f0073)  Line 97 + 0xd bytes      C++
        media_unittests.exe!testing::internal::FunctionMockerBase<void
__cdecl(bool)>::InvokeWith(const
std::tr1::tuple<bool,void,void,void,void,void,void,void,void,void> &  
args={...})
Line 1549 + 0xaa bytes  C++
        9a16e8ec()      


<< Thread name:         4956    PCMWaveOutAudioOutputStream::WaveCallback       
PCMWaveOutAudioOutputStream::WaveCallback       Normal  0 >>

        ntdll.dll!7c90e514()    
        [Frames below may be incorrect and/or missing, no symbols loaded for
ntdll.dll]      
        ntdll.dll!7c90df5a()    
        ntdll.dll!7c91b24b()    
        ntdll.dll!7c929fef()    
        kernel32.dll!7c802600()         
        kernel32.dll!7c802542()         
        winmm.dll!76b5b43b()    
        ntdll.dll!7c901046()    
        winmm.dll!76b45576()    
        winmm.dll!76b45aa7()    
>       
> media_unittests.exe!PCMWaveOutAudioOutputStream::WaveCallback(HWAVEOUT__  
> *
hwo=0x001662b8, unsigned int msg=957, unsigned long instance=18728336,  
unsigned long
param1=18737376, unsigned long __formal=0)  Line 285 + 0x12 bytes       C++
        winmm.dll!76b454e3()    
        msacm32.drv!72d114e4()  
        msacm32.drv!72d11670()  
        winmm.dll!76b454e3()    
        rdpsnd.dll!5dac1c4b()   
        rdpsnd.dll!5dac22ab()   
        rdpsnd.dll!5dac255a()   
        kernel32.dll!7c80b729()         

Attachments:
        dead_lock.patch  1.7 KB

--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings

--~--~---------~--~----~------------~-------~--~----~
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/group/chromium-bugs
-~----------~----~----~----~------~----~------~--~---

Reply via email to