winehq.org at urbanec.net
Wed Aug 18 10:30:25 CDT 2010
On 18/08/10 01:51, Marcus Meissner wrote:
> On Wed, Aug 18, 2010 at 01:00:35AM +1000, Peter Urbanec wrote:
>> I'm seeing crashes in FindNextFileW/FindNextFileA due to what
>> looks like a 64 bit HANDLE value being truncated to 32 bits.
> Check if your code uses "int" in its FindNextFile or findfirst things.
I had a good look at the wine source code as well as those parts of the
application source code that I can get access to and it all looks good
as far as correctly using HANDLE type to store HANDLE values.
Unfortunately, the application in question also makes use of FLEXlm
libraries from Macrovision and these binary blobs appear to be buggy.
All the symptoms point to the FLEXlm code storing the 64-bit HANDLE
value in a 32-bit int - this is evidenced by sign extension on some of
Of course, the initial cause and the issues with the debugger are
essentially unrelated. I have sent some sample test binaries to Eric, to
reproduce the debugger issue.
The buggy Win64 application is another story. It looks like Win64 must
most of the time return HANDLE values that fit within 31 bits, because
from what I hear, Windows users go through thousands of invocations of
this app without seeing any issues.
I wonder if there is a way of making wine allocate the memory for the
object pointed to by the HANDLE somewhere in the lower part of the
address space. That ought to mitigate this particular application bug
and bring the compatibility a little closer to what's observed under Win64.
More information about the wine-devel