使用 boost::asio::spawn 生成的 asio 处理程序中的 boost::property_tree::read_xml 段错误

2024-04-19

以下代码在 boost::property_tree::read_xml() 调用时因段错误而崩溃。 仅当在使用 boost::asio::spawn() 生成的 io_service 处理程序内部调用它时,才会发生这种情况。如果处理程序刚刚发布,则可以正常工作。 有解决办法或解决方法吗? (提升1.61)

#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;
}

经过一番挖掘,我们发现seg错误是由协程的堆栈溢出引起的,因为boost::property_tree::read_xml()中使用的rapidxml解析器默认在堆栈上为每个xml文档中的静态内存池分配64KB。

解决方案是减小池的大小,如下所示:

#define BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE 512
#include <boost/property_tree/xml_parser.hpp>

另一个解决方案是增加协程的堆栈大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 boost::asio::spawn 生成的 asio 处理程序中的 boost::property_tree::read_xml 段错误 的相关文章

  • C++ 中的软(不是:弱)引用 - 这可能吗?有实施吗?

    在 C 中我正在使用boost shared ptr and boost weak ptr自动删除不再需要的对象 我知道这些与引用计数一起工作 在 Java 中 内存由垃圾收集器管理 它将内置对象引用视为strong WeakReferen
  • 赋值运算符和复制构造函数有什么区别?

    我不明白C 中赋值构造函数和复制构造函数之间的区别 是这样的 class A public A cout lt lt A A lt lt endl The copy constructor A a b The assignment cons
  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • std::bind 重载解析

    下面的代码工作正常 include
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 我应该在应用程序退出之前运行 Dispose 吗?

    我应该在应用程序退出之前运行 Dispose 吗 例如 我创建了许多对象 其中一些对象具有事件订阅 var myObject new MyClass myObject OnEvent OnEventHandle 例如 在我的工作中 我应该使
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens

随机推荐

  • PHP - preg_replace YouTube 嵌入,无论顺序如何

    我试图从 YouTube 嵌入代码中捕获 3 个元素 但有时这些元素的顺序不同 或者有时嵌入代码包含更多参数 我想找到一种方法来提取视频 ID 宽度和长度 以便为 AMP 创建 YouTube 集成 嵌入示例 应改写为
  • Android webview 不加载页面,但应用程序从浏览器加载

    我有一个 html 5 移动网络应用程序 可以从浏览器加载 但卡在 android webview 上 我们在加载网络应用程序之前使用了启动屏幕 但我的网络视图卡在启动屏幕中 不加载主页 我们正在使用武尔夫 API http wurfl s
  • java中带有日语字符的电子邮件

    我正在使用java发送电子邮件 发送的消息可以使用不同的语言 但是当我用日语发送消息时 收到的邮件只有 人物 代码是这样的 String content u30d5 u30a1 u30a4 u30eb u540d SMTPMessage m
  • 在 jQuery Mobile 上禁用 data-role="header" 上的页面转换 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 是否可以禁用 data role h
  • 终止连接到 erlang 端口的进程

    我想写一个某种主管 我正在尝试实现关闭外部程序的功能 外部进程通过端口连接到 erlang 的代码 我不知道如何通过发送信号或其他任何方式来关闭该程序 关闭端口不是解决方案 因为我已经检查过许多程序不会在 SIGPIPE 上退出 您有任何想
  • 使用 elasticsearch-dsl-py 对另一个字段中包含的字段创建术语查询

    我在用elasticsearch dsl py https github com elasticsearch elasticsearch dsl py并希望过滤包含在另一个术语中的术语 如下所示 slug foo foo slug bar
  • 如何更改Accounts-UI模板?

    根据望远镜 http demo telesc pe 例子 源代码 https github com SachaG Telescope 可以显示自定义的 account ui 表单 参见他的用户登录 html https github com
  • 是否可以为 VS Code 编写二进制文件导入扩展?

    我想在 vs code 中显示二进制文件的一些信息 是否可以为 VS Code 编写一个扩展名 以便在资源管理器中选择该文件 或直接打开它 时 您会看到该扩展名从二进制文件中提取的一些文本 因此 该扩展的核心功能将是 简化的 二进制到文本转
  • R dplyr left_join 错误

    所以我一直在尝试使用 left join 将新数据集的列获取到我的主数据集 称为员工 我已经仔细检查了矢量名称和我没有进行的清理 但似乎没有任何效果 这是我的代码 将不胜感激任何帮助 job codes lt read csv Quest
  • 如何将 Cognito 用户池与 Facebook 等外部提供商结合起来?

    到目前为止 Cognito 拥有支持 Facebook 等外部提供商的身份池 现在有 Cognito 用户池 我很想使用它 但我不知道如何同时支持 Cognito 用户池和 Facebook 等外部提供商 看来身份池和用户池是分开的东西 我
  • Android.mk 包含其他项目

    说明 我的问题的目标是了解如何创建一个可以构建和运行的 Android mk makefile 如下所示的项目结构 Library is library on eclipse 数据 项目库 Project Interface 包含 1 个静
  • Html.Action 不会呈现用 [HttpPost] 注释的操作方法

    我的控制器上有以下方法 HttpPost public ActionResult UnplannedCourses int studentId var model CreateUnplannedCourseModel studentId r
  • 如何从 jQuery UI 日期选择器获取日期

    每当用户在 jQuery UI datepicker 中选择日期并单击表单上的按钮时 我想从 datepicker 获取日期 好吧 我需要获取他们选择的日期的年月日 如何从 jQuery UI 获取日期 Use var jsDate you
  • 控制台错误“非法的base64字符20”[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我使用以下代码进行加密和解密 而解密时我在运行时收到错误 错误消息是 非法的 base64 字符 20 加密代码 String sec
  • 是否可以通过在 ASP.NET 中模拟 Windows 身份验证用户来从 Active Directory 检索数据?

    我一整天都在试图解决这个问题 并且我在标准谷歌留言板答案中读到了一些相互矛盾的信息 我想做的是从活动目录中检索域用户 即当前登录用户 的电子邮件地址 我的 ASP NET 4 网站设置为 Windows 身份验证 在 Active Dire
  • PHP 中变量的数组路径

    因此 我编写了一个类 它可以解析 XML 文档并从中创建 SQL 查询 以根据设置更新或插入新行 由于脚本必须处理任意数量的嵌套块 因此我放入所有值的数组的路径是动态创建的 与以下示例非常相似 path array field1 field
  • AngularJS中单向绑定和双向绑定的区别

    你能解释一下两者之间的区别吗One way Data Binding and Two way Data Binding举个例子 我们使用了哪种情况 单向数据绑定 ng bind具有单向数据绑定 Model scope gt View 例如
  • 使用 Python 查找和替换非 ascii 字符的正则表达式

    我需要将一些非 ASCII 字符更改为 例如 Tannh user gt Tannh user 如果我在 Python 中使用正则表达式 我该怎么做 有没有更好的方法来做到这一点而不使用 RE re sub r x00 x7F theStr
  • R barplot Y轴刻度太短

    我正在尝试生成条形图 但 y 轴刻度太短 这是我的代码 barplot as matrix dat log y ylim c 10000 100000000 beside TRUE ylab Number of reads col c gr
  • 使用 boost::asio::spawn 生成的 asio 处理程序中的 boost::property_tree::read_xml 段错误

    以下代码在 boost property tree read xml 调用时因段错误而崩溃 仅当在使用 boost asio spawn 生成的 io service 处理程序内部调用它时 才会发生这种情况 如果处理程序刚刚发布 则可以正常