On Mon, 26 Sep 2011 18:36:16 -0400, Mehrdad <[email protected]> wrote:

On 9/26/2011 2:58 PM, Steven Schveighoffer wrote:
This is likely a DMC issue, and is probably best reported as a DMC bug. I don't know how much more you want to pursue this, but the next steps I'd recommend are:

1. obtain the dmc compiler (it's free) if you haven't already.
2. Compile an empty C program and run it using SciTE and Notepad++. Verify the same error occurs
3. report the failure using DMC's bugzilla.

I'm guessing there's something in the way SciTE or Notepad++ sets up the pipes before executing the process which causes the problem. I have a sinking feeling we'll see more of this issue when the new std.process is released :(

-Steve
OK, I think I found the bug, and I'm pretty sure it's what I was saying originally:

A handle is being closed that isn't actually valid.

Which handle? stderr. stderr is being closed when in fact it is the same handle as stdout. So when _fcloseallp() is called, it goes through the structures in __iob and closes each one in turn -- which causes a duplicate close operation on stderr, because it already gets closed when stdout gets closed.

So it's an snn.lib issue. Is it easy to fix? (I hope it is...)

Probably -- let the OS close the handles instead of manually closing them :)

-Steve

Reply via email to