[wave] assertion failed - multithread issue?
Hello 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 Thank you
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
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
Just got back to this after a long time. After some poking I found a race condition, indeed. It's fixed in SVN trunk. Could you verify, please? Regards Hartmut
participants (2)
-
Ein Held
-
Hartmut Kaiser