[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Groff] Re: grops and grohtml problems on vista (walter harms)
From: |
walter harms |
Subject: |
Re: [Groff] Re: grops and grohtml problems on vista (walter harms) |
Date: |
Sat, 27 Jun 2009 11:34:56 +0200 |
User-agent: |
Thunderbird 2.0.0.19 (X11/20081227) |
Ralph Corderoy schrieb:
> Hi Boudewijn,
>
>> I just tried StraceNT, here is part of the output generated when grops
>> encounters 'x init'
>>
>> [T5140] CreateFileA(34f818, c0000000, 3, 22fcd0, ...) = 104
>
> Based on WINE, CreateFileA is almost the same as CreateFileW which is
>
> HANDLE WINAPI CreateFileW(LPCWSTR filename, DWORD access, DWORD sharing,
> LPSECURITY_ATTRIBUTES sa, DWORD creation,
> DWORD attributes, HANDLE template)
>
> So we have access = 0xc0000000 and sharing = 3. So access is READ |
> WRITE:
>
> #define GENERIC_READ 0x80000000
> #define GENERIC_WRITE 0x40000000
>
> and sharing is READ | WRITE:
>
> #define FILE_SHARE_READ 0x00000001L
> #define FILE_SHARE_WRITE 0x00000002L
> #define FILE_SHARE_DELETE 0x00000004L
>
>> I don't think the c0000000 is correct, in every other call to
>> CreateFileA the second parameter is 80000000.
>
> That sounds fine; most of the other files are only being opened for
> reading, GENERIC_READ. The trace continues
>
>> [T5140] GetFileType(104, 0, 0, 1065, ...) = 1
>> [T5140] SetFilePointer(104, ffffffff, 0, 2, ...) = ffffffff
>> [T5140] GetLastError(ffffffff, 22fd2c, 22fcf8, 77122b19, ...) = 83
>
> 0x104 is what CreateFileA returned. SetFilePointer is
>
> http://source.winehq.org/source/dlls/kernel32/file.c#L936
>
> and the 2 being passed is FILE_END with 0xffffffff = -1 the `distance'.
> It returns INVALID_SET_FILE_POINTER = ~0 and GetLastError is returning
> 0x83 = ERROR_NEGATIVE_SEEK.
>
> That then ripples through the next set of trace.
>
>> [T5140] GetLastError(ffffffff, 3, 770ee2d4, 770f4fe0, ...) = 83
>> [T5140] FlsGetValue(3, ffffffff, 3, 770ee2d4, ...) = 3407d8
>> [T5140] SetLastError(83, ffffffff, 3, 770ee2d4, ...) = 0
>> [T5140] GetLastError(ffffffff, 16, 770ea9c5, 770f4ff3, ...) = 83
>> [T5140] FlsGetValue(3, ffffffff, 16, 770ea9c5, ...) = 3407d8
>> [T5140] SetLastError(83, ffffffff, 16, 770ea9c5, ...) = 0
>> [T5140] GetLastError(ffffffff, 22fd2c, 770ee2d4, 77122b28, ...) = 83
>> [T5140] FlsGetValue(3, ffffffff, 22fd2c, 770ee2d4, ...) = 3407d8
>> [T5140] SetLastError(83, ffffffff, 22fd2c, 770ee2d4, ...) = 0
>> [T5140] LeaveCriticalSection(340a80, 22fd48, 7713db33, 3, ...) = 0
>> [T5140] GetLastError(3, 34f818, 770ea9c5, 420229, ...) = 83
>> [T5140] FlsGetValue(3, 3, 34f818, 770ea9c5, ...) = 3407d8
>> [T5140] SetLastError(83, 3, 34f818, 770ea9c5, ...) = 0
>> [T5140] GetLastError(0, 1, 770ea9c5, 77127c1a, ...) = 83
>> [T5140] FlsGetValue(3, 0, 1, 770ea9c5, ...) = 3407d8
>> [T5140] SetLastError(83, 0, 1, 770ea9c5, ...) = 0
>> [T5140] OutputDebugStringA(77144cc0, 10001, 770ee31e, 22fadc, ...)
>> Invalid parameter passed to C runtime function.
>> = 22f168
>
> Dont' know if that helps any. I'd back the hunch of others in that the
> mode of the file that's opened by the Windows kernel doesn't match the
> later request to the C library with fdopen(). This `negative seek'
> could just be a red-herring. What happens for the `init x' on the case
> where there's no problems; the dvi one?
>
hi,
i do not use win* so if there is someone who knows and is willing to look into
that
it may be interesting to that there is a function called tmpfile(3), it is
ISO,POSIX,...
i admit not looking into the groff code.
re,
wh