Date: Sat, 25 Aug 2001 10:45:20 +0300 From: "Eli Zaretskii" Sender: halo1 AT zahav DOT net DOT il To: sandmann AT clio DOT rice DOT edu (Charles Sandmann) Message-Id: <7263-Sat25Aug2001104519+0300-eliz@is.elta.co.il> X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.9 CC: djgpp-workers AT delorie DOT com In-reply-to: <10108241959.AA13217@clio.rice.edu> (sandmann@clio.rice.edu) Subject: Re: gcc-3.0.1 WinXP and lfn=n References: <10108241959 DOT AA13217 AT clio DOT rice DOT edu> Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > 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?