Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#7239 closed Bugs (fixed)

Stack overflow when calling create_directories(":D")

Reported by: anton.naumovich@… Owned by: Beman Dawes
Milestone: To Be Determined Component: filesystem
Version: Boost 1.44.0 Severity: Problem
Keywords: filesystem crash colon Cc:

Description

On Windows7 x64, boost::filesystem::create_directories(":D") causes a stack overflow

Attachments (1)

create_directories.png (77.7 KB ) - added by henri@… 10 years ago.
Screenshot of create_directories() crash dump

Download all attachments as: .zip

Change History (6)

comment:1 by anonymous, 10 years ago

We are seeing this problem in boost 1.49. Crash dumps are showing endless recursion in create_directories(). I will attach one. Thanks. henri@…

comment:2 by anonymous, 10 years ago

The crash dump file exceeds the maximum allowed file size. Trying a screenshot of it for now. Contact me if you need more info.

by henri@…, 10 years ago

Attachment: create_directories.png added

Screenshot of create_directories() crash dump

comment:3 by Beman Dawes, 10 years ago

Status: newassigned

comment:4 by Beman Dawes, 10 years ago

Resolution: fixed
Status: assignedclosed

(In [80279]) Fix #7239, Stack overflow when calling create_directories(":D"). The reported problem was a symptom of an internal bug that caused path::filename() and path::parent_path() to fail on Windows for path(":"), and that in turn caused other functions that depend on filename() or parent_path() to fail, such as create_directories().

comment:5 by henri@…, 10 years ago

Thanks for the fix.

In the meantime, I realized why we were running into this. On Windows, libraries have virtual names of the form "::[GUID]/[name].library-ms" and thus would trigger the issue. (Aside: code should not attempt to create a directory with such a name, but legacy code not used to dealing with Windows library nodes probably have cases that fall into the creation action... at least, that was our situation.)

Note: See TracTickets for help on using tickets.