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.