Fixes for compiling with g++ 4.3.2

Mike McCormack wine.msi@hidden
Wed Dec 17 10:24:50 CET 2008


Hi Hilko,

Which machine are you running the tests on? The tests run successfully on my
Mac Mini (Intel Core Duo), built with gcc version 4.1.2 20061115
(prerelease) (Debian 4.1.1-21).  (from Debian Etch)

The thread test case that you're hitting runs an infinite loop on the client
side (ttclient), to make sure that it the kernel preempts correctly after a
short timeout.  My guess would be that there's a race with the timer setup
or the SIGALRM is not handled correctly.

Perhaps try adding a dprintf in ptrace_address_space_impl::run and see
what's happening to the SIGALRM, if it's coming at all.

I've pushed all your patches onto the public git repository.  I probably
won't be adding any of my own until I get back from holidays at the start of
January.

thanks,

Mike



2008/12/17 Hilko Bengen <bengen@hidden>


> 1. Using CC=gcc-4.2 CXX=g++-4.2
> -------------------------------
>
> In most attempts, the `thread' test leads to a process called
> `ttclient' consuming 100% CPU time; if I kill -9 that process, it
> outputs "failed to get registers".
>
> Sometimes, after I have killed the `ttclient' process during the
> `thread' test, I get an error in the `wine-port' test.
>
> Occasionally, the `thread' test fails with a "1014: debug: 185: wait
> failed" message.
>
> wine-port
> 1018: debug: 115: Expected STATUS_SUCCESS, got c0000033
> process 0010
>        thread 1014
> 1 threads 1 processes left
>
> 2. CC=gcc-4.3 CXX=g++-4.2
> -------------------------
>
> I have been able to observe the same errors with the `thread' and the
> `wine-port' test cases.
>
> 3. CC=gcc-4.2 CXX=g++-4.3
> -------------------------
>
> I have been able to observe the same errors with the `thread' and the
> `wine-port' test cases.
>
> The `file' test (./loader/ntl -q \??\c:\tests\file.exe) eats CPU time
> and rapidly leaks memory every time I call it.
>
> Strange: If I run ./runtest -q file straight from the shell, without
> using make, I don't get this behavior, but a bunch of failed tests.
>
> 1014: debug: 234: failed to query directory 80000006
> 1014: debug: 139: information wrong 00000062
> 1014: debug: 144: FileNameLength wrong 4
> 1014: debug: 145: FileName wrong
> 1014: debug: 146: FileAttributes wrong 00000010
> 1014: debug: 256: query failed c000000f
> 1014: debug: 139: information wrong 00000001
> 1014: debug: 144: FileNameLength wrong 2
> 1014: debug: 145: FileName wrong
> 1014: debug: 146: FileAttributes wrong 00000010
> 1014: debug: 276: query failed c000000f
> 1014: debug: 139: information wrong 00000001
> 1014: debug: 144: FileNameLength wrong 2
> 1014: debug: 145: FileName wrong
> 1014: debug: 146: FileAttributes wrong 00000010
> 1014: debug: 297: query failed c000000f
> 1014: debug: 139: information wrong 00000001
> 1014: debug: 144: FileNameLength wrong 2
> 1014: debug: 145: FileName wrong
> 1014: debug: 146: FileAttributes wrong 00000010
> 1014: debug: 306: query failed c000000f
> 1014: debug: 139: information wrong 00000001
> 1014: debug: 144: FileNameLength wrong 2
> 1014: debug: 145: FileName wrong
> 1014: debug: 146: FileAttributes wrong 00000010
> 1014: debug: 311: query failed c000000f
> 1014: debug: 139: information wrong 00000001
> 1014: debug: 144: FileNameLength wrong 2
> 1014: debug: 145: FileName wrong
> 1014: debug: 146: FileAttributes wrong 00000010
> 1014: debug: 30 failed, 117 passed
>
> 4. CC=gcc-4.3 CXX=g++-4.3
> -------------------------
>
> Same as (3).
>
> 5. General
> ----------
>
> Whenever the terminal window is resized while the tests run, I am
> presented with the debugger prompt, apparently because of SIGWINCH
> being caught. This can't be right, can it? Here's a patch.
>
> diff --git a/loader/ptrace_base.cpp b/loader/ptrace_base.cpp
> index f0c017f..59c9146 100644
> --- a/loader/ptrace_base.cpp
> +++ b/loader/ptrace_base.cpp
> @@ -328,6 +328,9 @@ void ptrace_address_space_impl::run( void
> *TebBaseAddress, PCONTEXT ctx, int sin
>                if (WIFSTOPPED(status) && WEXITSTATUS(status) == SIGALRM)
>                        break;
>
> +               if (WIFSTOPPED(status) && WEXITSTATUS(status) == SIGWINCH)
> +                       break;
> +
>                if (WIFSTOPPED(status) && single_step)
>                        break;
>
> Cheers,
> -Hilko
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.infowares.com/archive/ring3k/attachments/20081216/8c39b052/attachment.htm


More information about the ring3k mailing list