Mail Archives: djgpp-workers/2001/08/25/03:48:07
> From: sandmann AT clio DOT rice DOT edu (Charles Sandmann)
> Date: Fri, 24 Aug 2001 14:59:48 -0500 (CDT)
> >
> > It dies someplace in stat() - we enter and NTVDM goes away.
> > The name we send it when it does does not exist, but seems OK to me:
> > ("d:/djgpp/bin/djgpp/3.01/as.exe")
> > However this is the CD drive and the device is not ready.
> >
> > The previous calls to stat() had some really bad things sent:
> > "c:/djgpp/lib/gcc-lib/djgpp/3.01/../../../../djgpp/bin/djgpp/3.01/as.exe"
> >
> > I don't think we are supposed to send DOS strings that long. I'm not
> > sure which of these two caused the problem (or if a combo).
> >
> > I'm not sure what algorithm GCC uses trying to find as, but it looks like
> > it's checked every random combo at this point and still hasn't found it :-)
>
> I changed d:\djgpp\bin in specs to c:\djgpp\bin and I can now compile with
> lfn=n ...
What specs did you mean here? Are those the built-in specs that are
compiled into GCC? If so, how does d:/djgpp/bin gets into them--is
that because this is the directory where you or Andris have built the
package?
> I wrote a small test program - and now I can kill NTVDM with a nice crash
> box. The long SFN kills the "16-bit dos subsystem."
Can you post this program?
> Should we avoid sending very long strings to DOS?
How long is ``very long''? DOS is supposed to be able to handle file
names up to 80 characters, with some functions limited to just 64.
Another known DOS limit is 8 levels of subdirectories: some system
calls fail if the file name is in a subdirectory more than 8 levels
deep. The above file name doesn't exceed this limit, unless they
count them before canonicalization (with function 60h of Int 21h),
which should remove all the "../" parts for the file name.
Can you find out what is the limit in this case that NTVDM doesn't
like?
Also, I'm not sure I understand: if the long string is the one which
crashes NTVDM, how come removing d:/djgpp/bin from the list of
directories GCC tries fixed the problem? Finally, does the fact that
the CD drive is empty have any importance? What happens if you put a
disk in there?
- Raw text -