Boost logo

Boost Users :

Subject: Re: [Boost-users] [filesystem] windows program crashes in debug mode ( DbgUiConnectToDbg )
From: Juergen Hunold (juergen.hunold_at_[hidden])
Date: 2008-12-29 11:06:39


Hi Stephen !

On Monday 29 December 2008, Stephen wrote:
> Trying to port a mac program onto windows. I've been having some
> trouble getting the boost portion of it to work. It appears to run
> fine in release mode*, but crashes when debugged. Below is an
> excised piece of code that seems to replicate the problem, and works
> perfectly in release mode but crashes when debugging.

This seems to be a build issue on your side.

> I'm using Code::Blocks under XP, with Boost 1.37 with Mingw 3.4.5
> (linking to boost_system-mgw34-mt-1_37.lib and
> boost_filesystem-mgw34-mt-1_37.lib )

Also in debug mode ?

I've tried to reproduce your problem with
Boost Trunk
and inofficial (or experimental) mingw-4.3.2-tdm2 from
http://www.tdragon.net/recentgcc/

and it does work. Please find a sample project using bjam and Boost.Test
attached. It would be great if you could test this with your setup.
I've looked at the regression test but no-one seems to be running
mingw-3.4.x tests continuously (some stalled on trunk, none on release)

> (Also: It doesn't crash when I run it in windows 95 compatibility
> mode, but that's not really an option because that completely breaks
> the program it's meant to be a part of).

This is another sign for build misconfiguration.

> Doing a similar build in Visual C++ 2008 with msvc builds of the
> library, I get the error
>
> Unhandled exception at 0x7c812aeb in filesystest.exe: Microsoft C++
> exception:
> boost::exception_detail::clone_impl<boost::exception_detail::error_in
>fo_injector<boost::filesystem::basic_filesystem_error<boost::filesyste
>m::basic_path<std::basic_string<char,std::char_traits<char>,std::alloc
>ator<char>
>
> >,boost::filesystem::path_traits> > at memory location 0x0012fb34..
>
> whether I run a debug build or not.

That's is the constructor throwing an exception when setting up with an
invalid path. Try to catch it.

Using
fs::path p("bla");
your example throws:

unknown location(0): fatal error in "filesystem": std::runtime_error:
boost::filesystem::basic_directory_iterator constructor: The system
cannot find the path specified: "bla"
unknown location(0): fatal error in "filesystem": std::runtime_error:
boost::filesystem::basic_directory_iterator constructor: The system
cannot find the path specified: "bla"

at least with mingw-4.3.2

> Compiling with the debug builds of the libraries
> (X-mgw34-mt-d-1_37.lib) didn't produce significantly-different
> looking other errors from the ones above.

interesting.

> Someone on the internet (
> http://forums.codeblocks.org/index.php/topic,8429.msg64317.html#msg64
>317 ) seemed to have a similar problem, but his solution isn't
> satisfactory for me (for the reason given below). Linking to
> single-threaded builds of boost didn't seem to make a difference
> either.
>
> Any help with this would be really appreciated.

My last guess would be static vs. dynamic runtime libraries...

Yours,

Jürgen

-- 
* Dipl.-Math. Jürgen Hunold       ! Ingenieurgesellschaft für 
* voice: ++49 511 262926 57       ! Verkehrs- und Eisenbahnwesen mbH  
* fax  : ++49 511 262926 99       ! Lister Straße 15
* juergen.hunold_at_[hidden]        ! www.ivembh.de
* 
* Geschäftsführer:                ! Sitz des Unternehmens: Hannover
* Prof. Dr.-Ing. Thomas Siefer    ! Amtsgericht Hannover, HRB 56965
* PD Dr.-Ing. Alfons Radtke       !





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