Boost logo

Boost Users :

From: John.Wismar_at_[hidden]
Date: 2003-11-19 19:02:09


OK, I found it.

Upon yet another search of the archive, I found it: I was using the
single-threaded version of the library in a multi-threaded app.

Sorry for the bandwidth!

---------------------
John Wismar
john.wismar_at_[hidden]

In a previous state of enlightnment, I wrote:

I'm using the fielsystem library's directory_iterator class to collect
information about the files in a directory. I'm using VC7.0, and Boost
1.30.2.

My logic looks something like this:

----------------------------------------------------------------------
class DirInfo
{
public:
    DirInfo(fs::path aPath) : myPath(aPath){}
    void scan();
    void addFile(fs::path);
private:
   fs::path myPath;
}

void DirInfo::scan ()
{
    fs::directory_iterator itEnd;
    for (fs::directory_iterator it(myPath); it != itEnd; ++it)
    {
        TRACE("File: %s\n", it->string().c_str());
        if (!fs::is_directory(*it))
        {
            addFile(*it);
        }
    }
}

DirInfo di(fs::path("C:\\temp\\", fs::native);
di.scan();
----------------------------------------------------------

This successfully goes through all of the files (and subdirectories) in the
given directory, but after the last item, the next call to
fs::directory_iterator::operator ++() never returns. If anyone has any
suggestions or ideas, I would love to hear them!! Thanks!

The call stack at the point where execution seems to lock up looks like
this:

  ntdll.dll!NtDelayExecution() + 0xc
  kernel32.dll!_Sleep_at_4() + 0xb

MyApp.exe.exe!boost::detail::lightweight_mutex::scoped_lock::scoped_lock(boost::detail::lightweight_mutex
 & m={...}) Line 96 + 0xa C++
  MyApp.exe.exe!boost::detail::sp_counted_base::release() Line 132 + 0xf
C++
  MyApp.exe.exe!boost::detail::shared_count::~shared_count() Line 380 C++

MyApp.exe.exe!boost::shared_ptr<boost::filesystem::directory_iterator::dir_itr_imp>::
~shared_ptr<boost::filesystem::directory_iterator::dir_itr_imp>() + 0x2e
C++

MyApp.exe.exe!boost::shared_ptr<boost::filesystem::directory_iterator::dir_itr_imp>::reset
() Line 217 C++
  MyApp.exe.exe!boost::filesystem::directory_iterator::m_inc() Line 256
C++
> MyApp.exe.exe!boost::filesystem::directory_iterator::operator++() Line
88 + 0x2b C++
  MyApp.exe.exe!DirInfo::scan() Line 63 + 0x1a C++

---------------------
John Wismar
john.wismar_at_[hidden]


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net