首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一个关于 recv 的可复现奇怪 bug 记录

文章目录 demo server.cc service.hpp service.cc 客户端代码 demo 其实不止一个 bug,昨天就写了篇小短文,但是那个 bug 复现了几次之后就无法复现了,所以也就不提了...,和本文无关的我先抹去了。...奇怪之处不止在这里,第一个 buf 使用new分配空间并无不妥,在于第二个 buff,使用 new 申请空间,则会在第三次接收数据时出现脏数据,稳稳的,测了十几次,就是第三个数据包接收出问题(每个数据包内容都一样...诡异的不止于此,当第二个 buff 恢复正常之后,我想是不是堆区太乱了啊?于是就想把第一个 buf 也换成 char[8],但是又出现了脏数据的问题,这回更快,第一个数据包就出现了脏数据,无语得很。...我又想,不会是内存串了吧?于是我打印出地址,二者之间差了80个字节,有什么串不串的,而且我还 memset 了,依旧无济于事。 所以,这个 bug 是解决了吗?

59420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    我是这样搞懂一个神奇的BUG

    摘要: 通过分析用户的行为,才想得到为什么会出现这种情况! 前两天在BearyChat收到这样的一个报警消息: ? 409 ?Conflict ?...平时很少遇到这样的错误,貌似很严重的样子,吓得我赶紧查看到底发生了什么。 仔细查看错误详情发现是因为使用同一个邮箱账号多次注册导致后面的请求数据库直接报错。 ? 但是,不应该啊!我们是事先有做检查的。...于是,我打开了注册页面,输入邮箱和密码,然后以超快的手速点击创建团队N次。哈哈哈哈,不出所料,被我成功复现了!...只要能够成功复现,这个BUG基本上就算被解决了,接下来就是去分析如何优化代码防止出现这种情况了。有两个思路:1. 用户点击之后,设置被点击的按钮无效直到点击请求完全被处理;2....将验证邮箱是否存在的和创建团队两个异步事件想办法合并为一个原子操作。综合考虑,决定使用第一种方案。因为实现简单,对现有代码改动不大。

    60120

    我好像发现了一个Go的Bug?

    用责任链模式,最大的好处是可以针对每次请求灵活地插拔路由能力,如: [img1.png] 这样实现会在每次请求到来时去new 出整个责任链,可以预见对象会频繁的创建、销毁。...8.508s,很奇怪,更奇怪的是测试结果的第二列执行次数,他们居然都是 1000000000,这么巧吗?...这就导致了 n 很难达到 1e9 的上限,而且总的执行耗时也很难达到设定的预期时间,所以测试程序会一直跑~直到超时! 这大概是一个Bug吧?...写这段 Benchamrk 逻辑的作者加入了这个 1e9 的执行次数上限,考虑了溢出,但没有考虑 n 在计算过程中的溢出情况。 我觉得这应该是一个 Bug,但不能完全确定。...网上没有找到相关的 Bug 报告,于是去给 Go 官方提了 issue 和相应的修复代码,由于 Go 的开发流程比较复杂和漫长,所以在本文发表时,官方并没有明确表明这是 Bug 还是其他。

    41861

    我发现了知乎的一个bug!

    前段时间,一位粉丝微信上给我发了一个图,图片是一个知乎文章的截图,内容显示乱码,怀疑是微信bug: 随后他把这个链接发给了我: https://www.zhihu.com/column/c_1663245806869291008...我这边用Chrome浏览器发现能正常打开: 但奇怪的是,我换了另一台机器,打开确实出现了乱码的情况: 事情确实有点蹊跷,我对比了两边的接口通信情况,发现两边对www.zhihu.com这个域名解析的IP...经过我反复尝试,发现这并不是一个偶发性的bug,只要是新的浏览器或者无痕模式下,都能稳定性复现这个问题。 既然如此,那服务器是如何决定什么时候返回正常的,什么时候返回乱码的呢?因为并不随机啊!...那这么多Cookie值,问题出在哪一个呢? 我尝试一个个排查,最终锁定了这个名叫__zse_ck的Cookie: 当存在这个Cookie的时候,就不会乱码了,这又是什么原因呢?...进一步我发现,这并不是这个URL的问题,而是知乎所有专栏都有的问题,比如我自己的专栏: 当采用无痕模式打开的时候: 而且只有这个页面乱码,点具体每一个文章进去都是正常的。

    95610

    记录我发现的第一个关于 Google 的 Bug

    先贴上 Bug 链接: https://issuetracker.google.com/issues/68969655 Bug 本身是很简单的,就是 Google 的 Android 在线参考文档中,有一处示例代码...,有一个很严重的错误, 会引起整个章节的代码都无法有效执行....结尾,因为在各个回调里,如果注册服务成功,你拿到的 service type 都会被自动加上点符号了.关于 errcode 为0的细节讨论,可以看看 https://stackoverflow.com/...,有大彩蛋,呼哈哈~~ 还有,就是提 Bug 时,我还顺便截了下 Google 的 Bug 自动提交系统的图,留作以后自己看: 最后我想说的是: 我还是觉得这种文档性质的东西,放到特定仓库里,直接 fork...修改发 PR 更方便,快捷.不管怎样, Google 的 Bug 系统,也沾染上我的痕迹了,比想象中要容易呀~~

    1.2K60

    一个困扰我一个多星期的Nebula3的BUG

    最近看了一些PhysX的东西, 本想写个demo练练手, 结果遇到一个非常诡异的问题 当我兴冲冲的用Wizard建了一个工程, 编译, 运行, 竟然一片黑?...奇怪啊, 这个Wizard程序应该没问题才对, 要不然我怎么敢发布出来? 换成Release, 编译...结果正常! 用PIX跟踪了一下发现, 两个版本的变换矩阵不一样!...太崩溃了~ 代码肯定没修改, 因为我本机是架设了SVN的, 一切修改都有记录 重新安装一个Arip2009, 结果仍然一样! 然后QQ询问同样研究Nebula的朋友, 他们的结果是对的!...然后我就理所当然的排除了代码错误的可能性 首先怀疑自己的软件环境是不是有冲突, 因为我习惯装一大堆软件........虽说身为一个软件开发人员, 用盗版是可耻的, 但为了解决眼下的问题, 我等不到Win7开始卖了 Xp->Win7, DX SDK March 2008->March 2009, VS2005->VS2008

    60830

    Splay模版:P3369

    在伸展树上的一般操作都基于伸展操作: 假设想要对一个二叉查找树执行一系列的查找操作,为了使整个查找时间更小,被查频率高的那些条目就应当经常处于靠近树根的位置....于是想到设计一个简单方法: 在每次查找之后对树进行重构,把被查找的条目搬移到离树根近一些的地方....下面为了叙述方便,我们定义一个奇怪的定义,就是外孙,比如说x是fa的左儿子,那么x的右儿子就是fa的外孙;x是fa的右儿子,那么x的左儿子就是x的外孙....由于旋转是两个两个来做的,首先第一步,我们判断我们能不能做两次旋转操作,然后判断我们能不能做一次操作.判断的方法在代码中有说....splay[u].cnt = splay[u].size = 1; } splayed(u,0); } 我们注意到有一个前提,这个前提就是这个树是一个BST,也就是说我们查找可以根据BST

    30620

    震惊 | OpenCV的bug吗?我又发现了一个?

    大家好,最近我一直写东西,结果无意中我又有了新发现,这次主要是针对OpenCV中Mat对象的创建。...以前我经常写的代码是: // create Matlab风格 - 5 Mat m5 = Mat::ones(Size(4, 4), CV_8UC1); std::cout << "m5:\n" << m5...<< std::endl; 发现工作良好,全部初始化为1,那天我也不知道自己怎么想的,就想创建一个三通道全是1的: // create Matlab风格 - 5 Mat m5 = Mat::ones...三通道中只有1个通道被初始化为1,其它居然还是0,我觉得我要检查一下以前写的代码,我记得我写了很多这种创建方式。这个是不是OpenCV挖下的一个大坑啊!...最后,我是在OpenCV4.2版本上发现的,后来我又让别人也测试了一下,发现之前版本也是一样!我居然才发现!我晕!居然从来没有人写过这个,关注过这个!

    69420

    记一个折磨了我一天半的 Bug

    ,一根烟,一个 Bug 一天根本改不完的情况。...最近遇见的这个 Bug 是在修改项目遗留的问题时偶然发现的,简而言之就是这样: 服务 A 在从外界接收到推送的一条数据后,将数据插入到库里,然后通过 MQ 推送一条消息给 服务 B,服务 B 会根据收到的消息进行一些处理...A 的节点,于是去 Dubbo Admin 里核对节点——数量正常,网段正常; 怀疑测试环境的部署的 服务 A 的某个节点部署有问题,于是请运维同事一个一个 telnet 上去手动执行远程调用——能正常取到数据...带着这个疑惑我终于认真去看插库并发消息那块的代码了,于是就看到这样一段代码: @Override @Transactional(...) public boolean doSomething() {...虽然我对数据库了解不多,但对事务的特性还是有所了解——发送消息的时候,数据库里确实还没有刚刚插入的数据,事务提交后才会生效,也就是说,服务 B 收到消息后远程调用回 服务 A 想查找刚刚插入的数据,能否查到全凭运气

    17510

    记一个折磨了我一天半的 Bug

    ,一根烟,一个 Bug 一天根本改不完的情况。...最近遇见的这个 Bug 是在修改项目遗留的问题时偶然发现的,简而言之就是这样: 服务 A 在从外界接收到推送的一条数据后,将数据插入到库里,然后通过 MQ 推送一条消息给 服务 B,服务 B 会根据收到的消息进行一些处理...怀疑测试环境注册了多余的 服务 A 的节点,于是去 Dubbo Admin 里核对节点——数量正常,网段正常; 怀疑测试环境的部署的 服务 A 的某个节点部署有问题,于是请运维同事一个一个 telnet...带着这个疑惑我终于认真去看插库并发消息那块的代码了,于是就看到这样一段代码: @Override @Transactional(...) public boolean doSomething() {...虽然我对数据库了解不多,但对事务的特性还是有所了解——发送消息的时候,数据库里确实还没有刚刚插入的数据,事务提交后才会生效,也就是说,服务 B 收到消息后远程调用回 服务 A 想查找刚刚插入的数据,能否查到全凭运气

    61120

    一个Bug,让我发现了Java界的.AJ(锥)!

    说来也是奇怪,只要是学编程的,从初次接触的 Java 到安装 JDK、IDEA、MYSQL, 再到接触 Spring、MyBatis、RPC、MQ,哪怕有时候在浅的坑也会跳进去尝尝鲜,一遍抓着头发,一手点着鼠标也几乎是你的常态...你的键盘里总是有很多被抓碎的头发! 但,哪怕是抓了这么头发,还是遇到了一个满脑子都是骚操作的小伙。傅哥,我的切面怎么拦截不到?...三、如何正确使用 Aspect 的 .aj 类 AspectJ,简称 AJ 我自己说的 AspectJ 其实也是 AOP 的一种实现技术,功能类似于拦截器,在集成在 IntelliJ IDEA 开发工具里...但有些时候如果你能认真对待你弄出来的bug,深入分析下它是如何产生的,并把它复现出来一点点深入研究下,可能也会得到意想不到的收获,也说不定。所以凡是认真,凡事没有坏事。...关于切面、关于源码、关于开发,可能并不应该只注重于功能实现,甚至有时候要想办法逃离日复一日没有成长的工作内容。多在那些有价值的技术上下功夫,那你的收获也是最多的。

    42910

    浅谈Link Cut Tree

    性质 Link Cut Tree有许多性质,差不多就这些了: 每一个Splay维护的是一条从上到下按在原树中深度严格递增的路径,且中序遍历Splay得到的每个点的深度序列严格递增。...(就是链) 每个节点包含且仅包含于一个Splay中,每一个父亲的向儿子的连边中有且只有一条边是实边 所有的实边包含在Splay中,而虚边总是指向另一个Splay中的某个节点(指向该Splay中中序遍历最靠前的点在原树中的父亲...代码实现: inline int findroot(int x){ access(x);//Access将x和根节点弄到同一个Splay中 splay(x);//把x转到Splay的根节点 while...我们发现x一定是在它所在的辅助树的中序遍历的最后一个的(因为它是这条链上最深的点)。 我们把x点Splay到Splay的根,那么x显然是没有右子树的。...我们要实现把x移到原树的根,也就是把x到根这条链的深度全部翻转一遍。 在Splay上体现就是把整棵树反转一次。 我们可以写个翻转标记来减小复杂度。

    2.8K10

    ​我修复了一个 Vite Bug,让我的项目首屏性能提高了 25%

    充满好奇心的我,决定研究一下为什么 Vite.3.x 会有这么一个负优化,于是我仔细研究源码,最终发现了问题的根源,并给 Vite 提交了修复的代码图片大概测了一下,修复前的页面首屏时间为 1m06s,...假如有如下的模块依赖树,则扫描到的依赖就是 vue 和 axios图片模块依赖树是利用模块中的 import 语句(静态 import、动态 import 均可),将各个模块连接起来的。...虽然是一个小小的 bug,但实际上过程是充满坎坷的,每一个小小的问题都能研究几天,但最后回顾起来,这个过程学到了很多收获还是非常大的。...如果这篇文章对您有所帮助,可以点赞加收藏,您的鼓励是我创作路上的最大的动力。...也可以关注我的公众号订阅后续的文章:Candy 的修仙秘籍(点击可跳转)关联阅读《五千字深度解读 Vite 的依赖扫描》《深度解读 Vite 的依赖扫描》更多内容可以查看我的专栏:《Vite 设计与实现

    1.4K31

    客户一个无厘头的BUG ,让我的青春痘炸了2颗

    02 来看看我们的毛豆同学,公司上线的某款产品,客户反馈的是一个如何无厘头的BUG # 关键词:APP 登录页 手机号转义成中文 # 产品类型:某款 APP # 登录终端:iphone5E #...下面是用户录制的视频;很有意思;虽然是一个简单的小功能,但是我真的还是第一次,算是学习到了!所以投入话题中,接下来一起探讨。...04 我们来简单分析分析;首先用户只是输入手机号并未做点击获取验证码向后端发送请求的操作,也未点击任何其按钮;到这一步我个人看到这里基本把后端出现问题的可能性排除了; # 出现我脑海里 手机兼容性问题?...描述 该bug 客户重进多次手机百分百必现,然后前端校验只允许输入数字;然后用户都未触发登录,想从数据如何传入到数据库等方式去查看也行不通; 后来我咨询我身边的前端,说有可能是前端代码哪里写了该几个字,...但是后来我在想前端不是做了 正则表达式的校验,就算手机设置了替换,中文也不应该展示出来啊 最后毛豆拿着自己的IOS手机去发现该问题,按照操作在设置-》通用-》键盘-》文本替换把自己的手机号设置自己的名字了

    49910

    我以为发现了Android 14系统中的一个bug,然而...

    这段代码确实可以正常工作,但是大家有没有想过一个问题,假如现在你的手机上有另外一个App,它的AndroidManifest.xml里是这么写的: <activity android:name=...百思不得其解的我只好开始尝试把锅往Google身上甩了,我在想着要么这就是Android 14系统中的一个bug,要么就是Android官方文档没写清楚,把BroadcastReceiver这种特殊情况漏写了...我跟guting说,我再花点时间研究一下,要是实在整不明白我就去给Google提bug。 结果这一研究,还真让我发现了真实的问题所在。...所以这里并不是因为代码的写法不够安全从而系统抛出了一个安全异常,而是纯粹地系统找不到一个Activity能够处理我们发起的这个Intent。...所以现在我也不着急去给Google提bug了,我又再次仔细阅读了一下Android官方文档上面的说明: 重点都在第一句话上了,隐式Intent只会发送给外部组件,内部组件压根无法接收到隐式Intent。

    89010

    我开源了一个基于Vue的组织架构树组件

    项目背景 因为最近公司需要做一个OKR,OKR 里面有个对齐视图,是一个数型结构,如下图所示: image.png 就拿我 小智 来说,如果有人对齐我的 KR 就放到我的右边,如果是我对齐了谁的 KR,...就放到我的左边,类似一个上下级的关系,所以这里我用两棵树来表示左边与右边的关系。...分析 既然是树,那么每个节点都应该是相同的组件 节点下面套节点,所以节点组件应该是一个递归组件 整棵树应该有一个全局的状态,用来管理从外部传入的值以及向外部提供的属性和方法。...树的状态 对于树的状态,我用一个 TreeStore 类来表示,该实现方式主要是参考 ElementUI 中的 tree 组件。...代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。

    1.6K50

    Link-Cut-Tree(LCT)详解

    理论上splay和fhq treap都是可以的,treap不可以,因为不能维护翻转信息,在这里我比较推荐splay,因为网上有关LCT的题目大多数题解都是用splay写的,这样的话学习难度也会小一点,而且我自测...,我们按深度作为关键字,对于一个节点,它的左孩子所对应的原节点深度比它小,右儿子所对应的原节点深度比它大 (这里插一句闲话,LCT之所以难于理解,很大程度上是初学者分不清原树/splay,因此我希望大家在继续往下读的过程中...,一定要分清楚我所说的概念到时指的是原树还是splay树) 但是这样的话,虽然每个节点都包含在了splay中,但是每个splay之间都是独立的,因此我们要考虑如何在各个splay中建立联系, 对于一个节点...,假设它有三个儿子,其中最多有一个节点可以和他在一个splay中,另外两个儿子分别属于不同的splay。...没错,这个操作的用处就是判断两个节点的联通性(是否在同一棵树上) 实现的话,我们利用了一个性质:一棵树的根节点一定是深度最小的点 这样我们先$accexx(x)$,然后$splay(x)$,再不断的往左走

    2.2K141
    领券