...if under Linux, C::B svn code (without my patch), I guess that the cbp is not a standard project(such as a makefile project) Or in some wired reason , then m_PredefinedMacros is empty, so no thread task will be put in the pool, so the bug happens because the m_Pool have not tasks to run.
Ok, my guess is right, refer to
Jen's replyIn the first test case, I did see in the debug log:
...
NativeParser::DoFullParsing(): AddCompilerPredefinedMacros failed!
...
NativeParser::AddProjectToParser(): AddCompilerPredefinedMacros failed!
NativeParser::AddProjectToParser(): Done adding 0 files of project (b) to parser.
Look at the log, when parsing project(a), the variable m_PredefinedMacros is empty, but m_BatchParseFiles is not empty, m_PriorityHeaders is not empty.
But when parsing project(b),
I see that m_PredefinedMacros and m_BatchParseFiles are both empty. I don't know m_PriorityHeaders, I think it is also empty. So, that's the bug, every thing is empty, so the m_Pool is free now.
Compare to my test under Windows, debug log, I think the m_PredefinedMacros is not empty (
I don't receive "NativeParser::AddProjectToParser()/DoFullParsing(): AddCompilerPredefinedMacros failed!" error message) when parsing the second project, so at least on thread task is put in the m_Pool.
Now, one question: why fetch compilerPredefinedMacros get failed in Linux?