次のコードは、boost :: property_tree :: read_xml()呼び出しでsegフォールトでクラッシュします。 これは、boost :: asio :: spawn()を使用して生成されたio_serviceハンドラの内部で呼び出された場合にのみ発生します。ハンドラがちょうど投稿されている場合、それはokで動作します。 これには修正または回避策がありますか? 我々はrapidxmlパーサは、デフォルトでは、ブースト:: property_tree :: read_xml()で使用されるので、ワンセグ障害がコルーチンのスタックオーバーフローによって引き起こされることがわかったいくつかの掘削後boost :: property_tree :: read_xml boost :: asio :: spawnを使用して生成されたasioハンドラのsegfaults
#include <boost/asio/spawn.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <iostream>
#include <sstream>
#include <thread>
void process()
{
std::cerr << "start"<< std::endl;
std::istringstream is("<t>1</t>");
boost::property_tree::ptree pt;
boost::property_tree::read_xml(is, pt); // <<< seg fault here
std::cerr << std::endl << "end" << std::endl;
}
int main()
{
boost::asio::io_service io_service;
boost::asio::spawn(io_service, [] (boost::asio::yield_context y){
process();
});
io_service.run();
return 0;
}