Boost logo

Boost Users :

Subject: Re: [Boost-users] [wave] assertion failed - multithread issue?
From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2009-03-09 10:55:58


> when parsing some cpp files via boost.wave using multiple threads, I
> randomly get a failed assertion.
>
> "Assertion failed: static_cast<RefCountType>(*d.begin()) != 0, file
> C:\projekte\libs\boost\include\boost-
> 1_38/boost/wave/util/flex_string.hpp, line 1216"
>
> I am pretty sure that this is a multi-thread issue, as when using only
> one thread to parse the files, everything works fine.
> Unfortunately I cannot give you more specific information as I cannot
> get gdb to run on my system.
> I am using gcc 4.3.3

That certainly makes it almost impossible to reproduce the problem for me.

But one note: if you're using Wave in a multithreaded context (i.e. using the same Wave context/iterators from different threads) you certainly need to properly lock the Wave objects as these are not thread safe per se. The only thing guaranteed is that Wave doesn't use any (not protected) global data structures internally. So, as long as a certain wave context/iterator instance is used from one thread only (even in multi threaded applications), you should be fine.

HTH
Regards Hartmut


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