groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Groff] Re: grops and grohtml problems on vista (walter harms)


From: Ralph Corderoy
Subject: Re: [Groff] Re: grops and grohtml problems on vista (walter harms)
Date: Tue, 23 Jun 2009 13:43:02 +0100

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?

Cheers,


Ralph.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]