Hello Francois,
"DirectX Software Development Kit" offers in
"DirectX Control Panel" to increase the
"Debug Output Level".
That way one can get another hint from dinput:
DINPUT8: ERROR IDirectInput8::EnumDevicesBySemantics: arg 2: invalid UNICODE string
First I tried to build a dinput8.dll that just dumps the
data it gets from dinput-mini.exe, but could not
find any difference.
So I did some tests with DIACTIONA.lptszActionName member.
When the two last characters get replaced by \0 no fault
is reported anymore.
That way a succeeding exe and the failing differ (nearly)
just in the two replaced bytes in lptszActionName.
Therefore can we assume that it is not the compilers
fault, instead it uncovered a hidden bug either in
the test or dinput?
Kind regards,
Bernhard
dinput.c:
- { 4, DIMOUSE_YAXIS, 0, { "Y Axis" } }
+ { 4, DIMOUSE_YAXIS, 0, { "Y Ax\0\0" } }
Am 17.07.2016 um 21:02 schrieb Bernhard Übelacker:
Hello,
just tried to find out when this started exactly.
First by using old packages from
snapshot.debian.org.
That revealed it started between packages:
gcc-mingw-w64-i686_4.6.4-4+9_i386.deb
gcc-mingw-w64-i686_4.8.2-5+10_i386.deb
A git bisect of gcc history points to this commit:
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=ff2a5adaa72fef87cac689a40…
ff2a5adaa72fef87cac689a40c23258a30b304c8 is the first bad commit
commit ff2a5adaa72fef87cac689a40c23258a30b304c8
Author: hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Sun Apr 22 21:28:07 2012 +0000
* lto-symtab.c (lto_varpool_replace_node): Do not merge needed flags.
(...much longer commit message...)
git-svn-id:
svn+ssh://gcc.gnu.org/svn/gcc/trunk@186687
138bc75d-0d04-0410-961f-82ee72b054a4
:040000 040000 d706bdeafbddb9f5f02474e39a245dca08f3334a
508082a31919fe9e907f70b3b3278d4f8d953fac M gcc
Testbot runs:
Good: (gcc 62c34bf, last one before ff2a5ad)
https://testbot.winehq.org/JobDetails.pl?Key=24283
Bad: (gcc ff2a5ad)
https://testbot.winehq.org/JobDetails.pl?Key=24280
Hope this could be of any help to identify the issue.
Kind regards,
Bernhard
Notes:
- Did not install gcc build system wide. Instead set the PATH
that i686-w64-mingw32-gcc was taken from there.
- Initial wine configure step was done using Jessie default
gcc-mingw-w64-i686 4.9.1-19+14.3.
Then the iterations were just done by removing objects
from dlls/dinput8/tests and make dinput8_crosstest.exe.
- GCC history before 1e37e371 did segfault while building,
therefore started from there.
Am 24.04.2016 um 20:30 schrieb Francois Gouget:
I have rechecked this to make sure the test does not have a subtle bug
that causes it to depend on the stack layout.
In the process I have reduced the test to the minimum set necessary to
reproduce the bug (see attachment). But in the end I did not find
anything wrong so it does look like a compiler bug.
I don't know how to proceed from there.
* I think it would be better if someone more knowlegeable than me
reported this bug to the MinGW guys. Maybe someone who could undertand
what happens in the assembly code?
* On the Wine side it would really be nice to get this test (and
the three others that are impacted) to stop failing. But removing all
the static directives really does not feel right. Would it be better
to arrange for these tests to be compiled with -O0? Any other cleaner
workaround.
So I'm really hoping someone can step up and move this forward.
Here are the relevant bugs:
* dinput8:dinput regression caused by new compiler
https://bugs.winehq.org/show_bug.cgi?id=40384
* usp10:usp10 regression caused by new cross-compiler
https://bugs.winehq.org/show_bug.cgi?id=40385
* wininet:url regression caused by new cross-compiler
https://bugs.winehq.org/show_bug.cgi?id=40386
* Unexplained new random comctl32:header failure (cross-compiler issue?)
https://bugs.winehq.org/show_bug.cgi?id=40442