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

上周做了一个周年庆的抽奖的需求, 抽奖的规则一般就是在概率的基础上, 将奖品按时间跨度均匀分配, 奖励有实物和虚拟奖励. 抽奖代码的核心在:按时间轴均匀分配奖励和严格控制奖励的数量, 不能出现数量的不一致.

昨天上线后, 今天早上发生了一件从来没有想到会发生的bug, 就是抽奖滚屏公告不见了, 就是前台拉取不到中奖滚屏信息了. 果然是万万没想到呀! 通过脚本直接从后台拉取也是同样的结果, 问题出现在哪里?

Read More

协程:posix::ucontext用户级线程实现原理分析

在听完leader的<分布式rpc框架的介绍>课程后,对其中协程的实现方式有了基本的了解,无论的POSIX的ucontex,boost::fcontext,还是libco,都是通过保存和恢复寄存器状态,来进行各个协程上下文的保存和切换。所以有了这篇对ucontext实现原理的分析。
文章首先初略的温习了一下汇编的一些基础知识,其次就是ucontext源码分析,最后是一个ucontext示例极其调试过程。

Read More