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