Re: [Boost-bugs] [Boost C++ Libraries] #9016: filesystem::is_directory() returns false for junction

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #9016: filesystem::is_directory() returns false for junction
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-12-26 05:01:00


#9016: filesystem::is_directory() returns false for junction
---------------------------+------------------------
  Reporter: harris.pc@… | Owner: bemandawes
      Type: Bugs | Status: closed
 Milestone: Boost 1.57.0 | Component: filesystem
   Version: Boost 1.53.0 | Severity: Problem
Resolution: fixed | Keywords:
---------------------------+------------------------

Comment (by stsoe <stsoe@…>):

 I just upgraded to boost_1_60_0 and was hit by a regression I think is
 related to 9016. My windows tests are failing sporadically with the
 error:

 {{{
 boost::filesystem::read_symlink: The process cannot access the file
 because it is being used by another process: "r:/data"
 }}}


 Debugging this comparing 1_60_0 to the earlier 1_56_0 I finally narrowed
 the difference to {{{operations.cpp: bool is_reparse_point_a_symlink}}},
 which returns true in 1_60_0 but false in 1_56_0. The return value
 triggers {{{canonical}}} to call detail::read_symlink, which in turn ends
 up calling ::CreateFileW with dwShareMode set to 0 so that the
 file/directory is locked and cannot be opened by another process.

 I am running my tests on LSF and many many processes end up accessing the
 same file / directory at the same time, thus leading the the above error
 message.

 This problem unfortunately is a huge problem for the code I am working on,
 so I am wondering if I can get the 1_56_0 behavior by reverting the
 changes to {{{is_reparse_point_a symlink}}}?

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/9016#comment:3>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:19 UTC