2009/6/22 Ralph Corderoy <ra...@inputplus.co.uk> > > Hi, > > If this was Linux, we'd just strace(1) the pipeline and see what the > kernel was being asked to do for starters. I don't know if something > like > http://www.intellectualheaven.com/default.asp?BH=projects&H=strace.htm > would be any use on Vista. It may show precisely where the temporary > file is successfully opened and what's happening around the fdopen(). > > BTW, I noticed src/libs/libgroff/tmpfile.cpp:xtmpfile() never returns a > NULL > FILE pointer, it exits if there's a problem, so callers don't need to > check. > That means the run of calls to it in src/preproc/html/pre-html.cpp don't > need > their following if-statements, e.g. it can be > > fclose(xtmpfile(&psPageName, PS_TEMPLATE_LONG, PS_TEMPLATE_SHORT, > TRUE)); > > for each of the temporary files it wants the names of. > > Cheers, > > > Ralph. > > > > I just tried StraceNT, here is part of the output generated when grops encounters 'x init'
[T5140] CreateFileA(34f818, c0000000, 3, 22fcd0, ...) = 104 [T5140] GetFileType(104, 0, 0, 1065, ...) = 1 [T5140] SetFilePointer(104, ffffffff, 0, 2, ...) = ffffffff [T5140] GetLastError(ffffffff, 22fd2c, 22fcf8, 77122b19, ...) = 83 [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 I don't think the c0000000 is correct, in every other call to CreateFileA the second parameter is 80000000. Regards, Boudewijn