• c++

    一个内核参数导致的"幽灵进程"排查过程

    最近在将老服务上云,在k8s测试集群发现一个奇怪的问题,一个业务进程会自动启动二个,这里先说一下业务背景: 服务器本身的技术栈是c++&lua,业务使用了hive-framwork框架,服务管理使用了tcm,这里将某个服务上云是将相关的进程打包到一个Image,以富容器的方式运行 服务部署后…

  • c++

    initializer_list 引发的栈溢出问题

    最近项目要进行最后一次线上测试,对一些新增的server进行压测,在对同事用我写的协程框架搭建的ranksvr的时候进行压测的时候,ranksvr挂掉了,由于是压了一段时间才挂掉,所以有特定的业务逻辑触发了栈溢出,由于涉及到调用公司第三方API所以,查起来还是比较麻烦,一开始经过加日志,查看栈使用情况,但是发现在栈溢出前业务逻辑的栈使用情况正常。 这里我查问题的时候犯了一个错误…

  • c++

    你真的知道常量指针和指针常量吗

    C中的由于翻译的问题,有时候我们会混淆常量指针和指针常量的含义,但是我们都知道const char * 和char * const的区别,这里确实需要吐槽一下这两个名字的翻译。 常量指针(const pointer): 指针类型是Type * const,指针变量不可以被修该…

  • c++

    GCC栈溢出检测技术

    前一段时间在写ucontext的协程库的时候,遇到了栈空间溢出问题,然后就想到要研究一下堆栈溢出检测的相关技术。 欢迎批评指正,如果对汇编有一个语法问题可以看我之前的一片文章…

  • c++

    一个整数类型转换导致的线上bug

    上周做了一个周年庆的抽奖的需求, 抽奖的规则一般就是在概率的基础上, 将奖品按时间跨度均匀分配, 奖励有实物和虚拟奖励. 抽奖代码的核心在:按时间轴均匀分配奖励和严格控制奖励的数量, 不能出现数量的不一致. 昨天上线后, 今天早上发生了一件从来没有想到会发生的bug, 就是抽奖滚屏公告不见了, 就是前台拉取不到中奖滚屏信息了. 果然是万万没想到呀! 通过脚本直接从后台拉取也是同样的结果,…

  • c++

    进程中的地址是从何而来

    写了这么多年代码,地址这个东西每天都会使用…

  • c++

    Boost共享内存/内存映射文件构建容器的封装

    Boost Interprocess组件提供了通过了托管内存段(managed_mapped_file & managed_shared_memory)在共享内存和内存映射文件上进行复杂数据结构构建的功能。 通过boost.ipc构造简单的POD纯数据结构, 非常的简单 c++复制#include <iostream> #include <cstdio> #include…

  • c++

    Boost:managed_mapped_file及C++内存分配和对象构造分析

    Boost的提供了一套ipc的接口,内存映射文件将文件的内容映射到进程的地址空间。 c++复制#include <boost/interprocess/file_mapping.hpp> 原生的file_mapping接口提供了创建一个内存映射文件,然后通过mapped_region进行进程地址空间的映射,获取映射到进程空间的地址…