This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cygwin 1.7: Concurrency Issue with Shared State Initialization


On Mar 12 17:27, Corinna Vinschen wrote:
> On Mar 12 16:48, Schmidt, Oliver wrote:
> > Hi,
> > 
> > > Does the patch help?
> > 
> > As the issue is sporadic it's not that easy to come up with a conclusive
> > answer...
> > 
> > I downloaded http://cygwin.com/snapshots/cygwin1-20100309.dll.bz2, 
> > unpacked and renamed the DLL and used it as drop-in replacement to the
> > 1.7.1 DLL.
> > 
> > I experienced three times by now the effect that echo.exe "hangs" without
> > using significant CPU time. Attaching a MSVC debugger I could only find
> > out that in all three cases the executable stays in this endless loop:
> > 
> > 7D6373D2  cmp         dword ptr ds:[7D6A0220h],edi 
> > 7D6373D8  jne         7D628061 
> > 7D6373DE  lea         eax,[ebp-28h] 
> > 7D6373E1  push        eax  
> > 7D6373E2  push        ebx  
> > 7D6373E3  call        7D61CCB1 
> > 7D6373E8  cmp         eax,ebx 
> > 7D6373EA  jge         7D6373D2 
> 
> What about building the Cygwin DLL with debug symbols and using the GDB
> debugger instead of MSVC?  The latter doesn't grok the Dwarf-2 debugging
> format.

Hang on.  This endless loop has nothing to do with Cygwin code.  The
addresses show that we're outside of Cygwin, which is in the 0x61xxxxxx
address range.  0x7dxxxxxx is probably somewher in a Windows DLL.  Are
you absolutely sure that you can rule out BLODA effects?

Besides, the loop which handles the spinlock is much bigger than the
above code.  It would also contain a locking assembler directive along
the lines of `lock cmpxchgl ...'.

And last but not least, even if that doesn't count much, I just glared 
at the new spinlock loop in shared.cc until my eyes watered, and I can't
figure out any situation in which this could result in an endless loop
*unless* the process which is doing the initial initialization has been
forcefully teminated during initialization.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]