FindFirstVolume crash
GOUJON Alexandre
ale.goujon at gmail.com
Fri Dec 14 04:13:30 CST 2012
On 12/12/2012 11:00 PM, Michael Ost wrote:
> Hi list,
>
> Can someone help me get through the wineserver code for passing data
> through a buffer in response to an ioctl?
>
> Our (slightly out of date 1.3.24 version of) Wine is getting
> INVALID_HANDLE_VALUE returned for FindFirstVolume. The problem is that
> the FindNextVolume call inside FindFirstVolume fails because it is
> told there are no mount points.
>
> I have tracked the code through FindFirstVolume through
> NtDeviceIoControlFile to server_ioctl_file on the app side.
>
> On the wineserver side I can see the wineserver fielding the ioctl
> request, and mountmgr.sys filling a buffer with 5 mount points.
>
> But this information is being written into a buffer (address 0x12510)
> by the wineserver that is not making it back to FindNextVolume buffer
> (address 0x29820) on the app side.
>
> Where do these buffers come from? Do they use shared memory? Or is the
> info passed through a pipe? I'm having trouble making my way through
> the wineserver code, so any tips or pointers would be appreciated!
>
> Thank you,
>
> Michael Ost
> Muse Research, Inc.
Hi Michael,
First, some tips:
Have you tested the latest version of wine (v1.3.24 is 17 months old) ?
There are some helpful debug channels which can help you like 'volume'
or 'server'. I only recommend 'relay' if you're despaired (remember
there is a registry key that hide some very-repetitive-and-often-useless
calls)
I built a simple test case and I don't get any error.
You said there is no mount points but you should at least get the C
drive and the drive corresponding to /.
Is your wine prefix working ?
Try with a new one (WINEPREFIX=~/wine_test for instance)
I'm not used to debug wineserver issues and I'm happy with that because
debugging multi-thread apps is often a mess.
But after some research, it seems to be a pipe.
So server_ioctl_file (ntdll/file) calls wine_server_call (ntdll/server)
calling then send_request (same file) which writes to
ntdll_get_thread_data()->request_fd. This one seems to be initialized in
RtlCreateUserThread (ntdll/thread).
Hope it helps..
-------------- next part --------------
A non-text attachment was scrubbed...
Name: findVolumeTestCase.c
Type: text/x-csrc
Size: 750 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20121214/85f71c60/attachment.c>
More information about the wine-devel
mailing list