[1.7] deleting in-use directories

Eric Blake ebb9@byu.net
Thu Apr 9 18:31:00 GMT 2009


Corinna Vinschen <corinna-cygwin <at> cygwin.com> writes:

> Incredible but true.  It was an alignment problem with a local buffer
> in the function which moves the directory to the bin when a sharing
> violation occurs.

> BYTE infobuf[sizeof (FILE_NAME_INFORMATION) + 32767 * sizeof (WCHAR)]

That's an awfully big buffer to be stack-allocating.  It's bigger than a system 
page, which means if you are nearing stack overflow, then call rmdir(), your 
application could suffer from silent termination rather than orderly SIGSEGV 
stack overflow when it accesses beyond the guard page.

Didn't a recent gcc version add a -W option to warn about stack frames larger 
than a certain size?

>  This seems to be a new problem with gcc-4.  As long
> as I built Cygwin with gcc-3, I never had this problem.

Weird, indeed.

> 
> Please test the latest from CVS.  It should fix your problem.

I'll let you know how it goes.  Meanwhile, I've patched the autoconf testsuite 
to avoid triggering the problem in the first place.

-- 
Eric Blake




--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list