Problem with regression tests getting stuck

Paul Millar paulm at astro.gla.ac.uk
Mon Sep 2 16:22:29 CDT 2002


Hi Sylvian,

On Fri, 30 Aug 2002, [iso-8859-1] Sylvain Petreolle wrote:
> I recently tried to compile gcc 3.2 from sources on my RedHat 7.3.
> It seems that it is a gcc 2.96 bug as tests now pass 100%.

Actually, one of the annoying things about this is I've never managed to
reproduce the bug in a "controlled" environment. Even repeatedly running
the regression tests in a loop on the same machine and just waiting for it
to freeze: nada! It only seems to happen during a WRT-update. There are
some differences, but only in terms of pipes and filters: nothing that
should affect the outcome.

I could switch to gcc-3.1 and see if that fixes it but, as Mr Holmes would
have it, absence of evidence is not evidence of absence :)

Besides, too often I've seen some completely wacky behaviour of seemingly
innocuous code (which I was convinced was because of compiler-error) only
for some subtle code-related bug to turn out to be the culprit.

That said, gcc-2.96 was/is a completely fscked up "release" of gcc.


> (even if gcc 3.2 is a bit slower to compile wine;))

How much of a performance hit do you suffer here?


>  --- Paul Millar <paulm at astro.gla.ac.uk> a écrit :
> > Hi everyone,
> > I've had the regression tests freeze on me again (see [1] for
> > previous
> > report). Sylvain has reported problems with the wininet regression
> > tests
> > (described in [2]). The symptoms are the same, but for me the problem
> > is
> > only intermittent. This time I caught the problem with gdb and
> > obtained
> > the following info:
> > 
> >    [...]
> > Loaded symbols for /lib/libresolv.so.2
> > 0x402e7744 in __libc_close () at __libc_close:-1
> > -1      __libc_close: No such file or directory.
> >         in __libc_close
> > (gdb) bt
> > #0  0x402e7744 in __libc_close () at __libc_close:-1
> > #1  0x400ec9a4 in __DTOR_END__ ()
> >    from /home/paulm/WINE-cvs/wine/dlls/libntdll.dll.so
> > #2  0x400b3df5 in WaitForMultipleObjectsEx (count=0, handles=0x0, 
> > wait_all=0, 
> >     timeout=100, alertable=0) at ../../scheduler/synchro.c:257
> > #3  0x400b3b88 in Sleep (timeout=100) at
> > ../../scheduler/synchro.c:178
> > #4  0x40358747 in winapi_test (flags=268435456) at tests/http.c:121
> > #5  0x40358b36 in func_http () at tests/http.c:184
> > #6  0x40358f9d in run_test (name=0xbffffc63 "http.c") at wtmain.c:244
> > #7  0x40357037 in __wine_exe_main () at wininet_test.exe.spec.c:133
> > #8  0x400aff84 in start_process () at ../../scheduler/process.c:528
> > #9  0x400b3f3f in call_on_thread_stack (func=0x400afd2c)
> >     at ../../scheduler/sysdeps.c:108
> > 
> > So, to summarise (with some extra bits of information):
> > 
> > The problem occurs when wininet/tests/http.c is testing asynchronous
> > HttpSendRequest(), so flags > 0. The problem is triggered at line 121
> > of 
> > http.c, i.e.:
> > 120    while ((flags)&&(!goon))
> > 121        Sleep(100);
> > 
> > 
> > Sleep(), in turn, just calls WaitForMultipleObjectsEx(). From 
> > scheduler/synchro.c:
> > 176	VOID WINAPI Sleep( DWORD timeout )
> > 177	{
> > 178	    WaitForMultipleObjectsEx( 0, NULL, FALSE, timeout, FALSE );
> > 179	}
> > 
> > 
> > WaitForMultipleObjectsEx() has problems when it gets to 257:
> > 256	        SERVER_END_REQ;
> > 257	        if (ret == STATUS_PENDING) ret = wait_reply( &cookie );
> > 258	        if (ret != STATUS_USER_APC) break;
> > 
> > ret is 1079729528, btw.
> > 
> > AFAIK, __DTOR_END__ (see near bottom of stack) is the destructor for
> > a
> > function call in ntdll. I'm probably missing something obvious, but I
> > don't see the connection between scheduler/synchro.c:257 and ntdll.
> > The
> > closest is wait_reply() (in scheduler/client.c) calls wait_reply_data
> > (in
> > same file), which calls NtCurrentTeb(), which is commented as an
> > NTDLL
> > function. But there doesn't seem to be an implementation of
> > NtCurrentTeb
> > in ntdll.
> > 
> > Any ideas?
> > 
> > Cheers,
> > 
> > Paul.
> > 
> > [1] http://www.winehq.com/hypermail/wine-devel/2002/08/0006.html
> > [2] http://www.winehq.com/hypermail/wine-devel/2002/07/0386.html
> > 
> > PS, I'll create a bugzilla in a bit.

----
Paul Millar




More information about the wine-devel mailing list