DMD 2.055 Crashing on Windows 7 x64 (So is my D program)

Steven Schveighoffer schveiguy at yahoo.com
Mon Sep 26 14:36:33 PDT 2011


On Mon, 26 Sep 2011 17:30:42 -0400, Mehrdad <wfunction at hotmail.com> wrote:

> On 9/26/2011 1:51 PM, Steven Schveighoffer wrote:
>> AHA!
>>
>> Yes, there is a bug in snn.lib regarding pipes.  And I fixed it,  
>> waiting for Walter to incorporate it :)  I needed it for the new  
>> std.process.
>>
>> What it comes down to is, DMC's FILE * implementation does not expect  
>> some of the quirks of pipe HANDLEs.  For instance, if you open a FILE *  
>> around a pipe handle, it still tries to do a seek on that handle, and  
>> crashes.  Also, when the write end of a pipe is closed, reading from  
>> the read end results in EPIPE from ReadFile, but this is translated to  
>> EBADF by the runtime.  Therefore, FILE * sets an error instead of EOF.
>>
>> Is the email address you have for this message correct?  If so, I can  
>> send you a new version of snn.lib to try linking your code against (if  
>> you are willing to go through these steps), to see if it fixes your  
>> problem.
>>
>> Using the command line dmd to build should be sufficient (I think).
>>
>> -Steve
> Thanks for the email.
>
> It seems like it still crashes from SciTE, though. :(
> When I try debugging, I see it's doing so inside _close() which is  
> /immediately/ above kernel32.dll!@BaseThreadInitThunk at 12()  -- in other  
> words, it seems to be called directly from the entrypoint of the  
> program, assuming it hasn't undergone optimizations. The error is:  
> 0xC0000008: An invalid handle was specified.
>
> Is there any other place in which this can happen?

Hm... its hard for me to say.  Why would it be calling _close before  
main() is called?  Very strange.  Is there any more stack information?

Can you get it to crash by using a pipe from the command line?

In other words:

myprogram | more

or echo hi | miprogram

?

If this isn't killing the program in the same way, then it might be a  
different issue than the one I fixed.

-Steve


More information about the Digitalmars-d mailing list