先说一个我自己的:周五临上线前随口一提要不改一个很久之前的问题吧。我没多想,随手就改了调了之前外包团队的一个函数。细节也没看。(甩锅的时候就用上外包团队了)
结果第三天后周日平台就炸裂般的 High 了:
假如这是『原神』:你可以理解成基本上大部分玩家都用上了 诺言之剑
假如这是『直播』:你可以给你最爱小姐姐随意送 超级火箭、一起看个海、宇宙一号,听她们用颤抖的声音叫爸爸
假如这个『淘宝』:而又赶了直播卖楼,这可以让你圆了人生梦想当上包租公。一边看着满屋的钱口中念念有词的说道:走开,你们这些讨厌的钞票
当时的老板听说之后都诡异的笑了。后来辛苦拉了几位同事、DBA 、运维等一起来善后。也再次感谢所有的同学。
不能说太多细节了,捂脸逃~

if i=1: ...学弟写的 Python ,一大帮人找了一晚上的 bug ,愣是没想到这个问题,然后被我 1 秒定位

刚来公司,写了个全局变量结果导致 A 用户下到了 B 用户的文件

交易策略,把买卖方向写反了,当天给市场 K 线拉出了一个长条。

同事写过,以前安卓的设备号随便获取的,我们的账户跟这个设备号强绑定,后面小米率先发力,导致获取到的设备号都一样,账户数据全特么乱了,关键还是跟用户隐私相关....

价格订阅错了,A 的价格显示为 B 的价格。导致验收环境撤回,推迟上线 1 个月

v 站没有匿名,我不敢说。

field filedil8n i18n

很久很久以前,lua 有一个变量忘记写 local 了,导致线上数据错乱了

memcached 雪崩,一个月炸一次

虽然不是 bug 但比 bug 还蠢,至今记得..远古时代,托管到机房的一台 win server ,rdp 过去新增一个 ip需要在网络连接-属性里面去设置,一顿点点点之后没有生效,想着先禁用网络适配器再启用就能生效,果断的点了禁用...至此,rdp 断开连接、机房晚上无人值守

一个直播 app, 我重构了主播端, 上线后一切正常直到有一天, 所有使用 ios 客户端的主播都间接性闪退. 排查下来只要某个安卓客户端的用户进入这个主播的直播间, 就会让主播端闪退, 这个用户进一个闪一个, 乐此不疲, 给平台上所有 ios 设备的主播都干倒了

#10 这事我也干过…… 不过还好是托管在本地 IDC 打电话摇人自己开车去现场了

今日快乐的源泉

rm bin/ 敲成了 rm /bin/线上测试环境,CTO 两次来暗示我问题挺严重的,我装听不懂。

我司代码规范要求这种条件对比的时候将常量放在等号前面(虽然是 C 语言),你这个比如写个 if 1=i ,编译的时候直接就给你报错了

没写过什么大 BUG..一个内部系统 DB 要加个从库,运维没空我就自己干,ssh 到主库上去搬配置文件同时在要加从库的机器上装 mysql ,装完发现版本不对然后中途被聊天软件打断回了两句话切回来输入了个 yum uninstall结果 tab 错了,把主库卸了....赶紧把 vip 切到从库上面去从那之后这种活再也不自己干了

15 年,上班第一年,有一个需求,明天给客户一句祝福,7 天不重样,然后内容写死在本地,我只保存了前六天的,第七天,所有用户上 APP 都崩溃,因为角标越界了。印象深刻。

说个让我怀疑了很久才看出来的 BUG (当然不是啥大问题),之前教同学基本前端入门的时候,我和另外几个人盯着了半天才看出来html<ol><li>item 1<li><li>item 2<li><li>item 3<li></ol>

真是比较隐藏的 BUG 看到 C 同学也能下到 B 的文件了 你这算乌龙指吗? 同病相怜啊 关于钱的问题验收撤回幸运+1 别怕,说。如果被绑架了你就眨眨眼 第一行可以理解,第二行这是钓鱼网站吧 被批斗了吗? 是做游戏的吗? 哈哈,不赖你,思维过程完美闭环。这是惯性思维的锅 这个厉害了,走那要清场。这一般是厅级以上干部的待遇 还好是线上测试,不是线上。装傻给你 100 分 还好有从库,救你一命

所以 1=i 这种写法就很有必要。

把 main 写成 mian 。。。

清除数据库然后把表删了

用 JS 就不会有这种问题 不连敲三个等号浑身不舒服🤣

全角空格天下第一

有一次,“被迫”跑路具体逻辑我就是在一个原有 dubbo 服务接口里面返回对象 DTO 里面加了个字段我自己 java 服务调用是正常的,我觉得加字段这种应该不需要特别排查吧,应该不会报错然而发布生产的时候,一堆 php 服务调用报错,全部都是 dubbo 服务解析出错,紧急回滚,后面才知道是序列化协议问题(特殊字符带表情),java 服务调用是没问题的领导不懂技术,全给我一个人背锅,丑陋的嘴脸看着都恶心,我气不过,直接当场说不干了,跑路ps:之前就有倒霉蛋遇到过,背锅,被骂,然后用 base64 转了,序列化方式还是没改,我后面问他为啥不改,他说改出问题还要被骂,改好了又没奖励,领导不懂技术真可怕

14 年左右吧。小公司,服务器后端自己一个人。晚上 11 点上线测试完了。回家了,凌晨 3 点左右打电话说客户端有一个什么问题无法解决。让服务这边改一下。然后 3 点开车回去改了。就上线了。。。。6 点吃完早餐回来,再看了一下改的地方。发现,我为了测试简单,把 CDKEY 的验证逻辑直接跳过了。。。任意输入都可能通过 CDKEY 验证。。。不过好的是还有一个 CDKEY 类型,类型不一样发东西不一样。一身冷汗,赶快再次上线。

#14 我删东西都是 rm -rf ./xxxx 打死不敢从/开始写地址

mian

这种写法其实应该不允许. 比如 go 里面这么写会编译报错.

刚工作时要给内部使用的基础平台加个功能,我当时也是头铁,直接写了半个多月,改了非常多地方一次性推到远端,dev 上测试没发现问题直接就提发布申请走流程了刚部署上去就有人问怎么不能跑任务了,当时就一激灵,上去测试发现点了没反应,赶紧定位发现请求数据有问题(具体啥情况记不太清了),就找运维的人看,各种什么抓包、网络什么的都查了没发现问题,让我回滚试试结果 revert 问题还在,reset 又推不上去,强制推都不行,刚工作直接干红温了后来还是带我那大哥帮我折腾了一番 回滚回去好了,查代码没发现问题,重新部署又正常了😅

某电商网,写了个前端导致 iOS app 用户无法支付

倒不是自己写的rm -rf / xxxx 多了亿个空格

还好是第一年,要不然年终奖就没了 不说有问题,眼光一扫就过了 发现字符顺序错误引起的问题很多,特别是这种无法被编译的问题 这个是想跑路的节奏啊 这也是一个隐藏款 唉,这种常见修改触发的 BUG 还不处理就是用来坑队友的吧 这应该是前世的五百次擦肩而过换来了今生的一次回眸 看上去好像也不违和

更新余额没带用户 id

if ( a & b || c) 本来想表达 if (a & (b || c) ) ,只要有操作就会给用户发站内信,幸亏发现的快,不过一两个小时发出去了几百条了。

说个狠的,不是我,是我同事。后台服务 delete * from XXX,where 条件给漏掉了,核心用户订单主表

接手了一个外包的 Java 项目,因为对 Java 和 Java 日期类了解不够,发现某字段出现了时区问题,导致日期偏移了 8 小时,影响了几百万数据

又想起来一个,上家公司临走之前让我把一个巨离谱的 Excel 做成 web 展示,合并单元格看得我头都大了。后来没办法用原生 HTML 全部写死交差走人。在我走了没多久前同事就来问我那个页面在哪,要做成动态展示数据的……

一不小心删了线上几亿数据( 0.0 )

我也干过类似的事情,点之前还觉得自己很精灵

写过一个 bug ,客户缴费了 1600w , 系统只入帐了 16w 。

想起了 bumblebee 的 bug github.com/MrMEEE/bumblebee-Old-and-abbandoned/issues/123

没上模拟盘。。。。

这帖子治好了我的抑郁症,笑死我了

顺手把一个切线程的东西给拿掉了,没想到有线程问题,导致客户看不到数据了……然后客服那几天被疯狂轰炸;发誓,以后连代码格式化都不做了。避免问题。不清楚的万万不能乱动。

好多年前,上游临时换接口,周末 8 点的时候来公司修改(我死活想不起来为什么是这个时间点投产)。充值金额在几个 jsp 之间跳转,跳着跳着把我给跳迷糊了(前任留下的代码,amount 一会儿格式化成分传递,一会儿格式化成元显示)。最后把接口单位为分的 amount 误当成元,又×100 送给后台。后果就是客戶只要消费 1 元,卡里就能充进去实际价值 100 的天然气。还好这个 bug 只停留了 10-15 分钟。第六感预警,赶紧修复掉了。后来看日志,幸好没有幸运儿发现...

不是 bug ,但是是运维上的操作负责过一个巨大的物联网平台,之前老版本的代码中,负责处理设备上下线的消息队列叫 device.connect 和 device.disconnect新版本换成 device.online 和 device.offline 之后旧队列就没用了,但是存了一堆的历史消息于是看着旧队列不爽的我就在某个版本的 release note 里写让运维把 device.online 和 device.disconnect 队列给删掉运维小哥华丽丽地也给删了,然后客户第二天疯狂 call 公司为啥设备全部下线?万幸当时是个周六,而且我和运维都在加班,一个小时内就把问题定位而且修复了

想起了近期某二游客户端卸载时候清空用户硬盘的问题

一个中文逗号。开发时是英文的,调试没问题。准备发布的时候又想格式化一下,可能是按错什么键删了个英文的逗号,然后输入了一个中文逗号,格式完美。提交代码,告诉运维要上线了(那会儿还是替换文件的形式进行部署),下班。第二天中午,公司老总过来给客户道歉。

#define mian main ?

写了个红中麻将的听牌算法,用的是查表法,我把整个表用字典套字典的方式来实现二叉树,结果导致服务器爆内存了。🙂

连接池饥饿导致线上卡住

#11 原因是啥?

8 年前,在 UCloud 上跑数据,不小心也不知道触发什么官方 Bug 了,结果是把 UCloud 的虚拟交换机干高负载了然后官方主动反向沟通:你们在干啥……

  1. 某设备出现故障 bug ,远程调试失败,导致同事不得不奔赴当时还在打仗的叙利亚2. 调试某设备,由于 bug ,发射功率超限,把一颗卫星的一个转发器干沉默了一会儿3. 另外同事的,写了个 bug ,半夜被拉上直升机上船维修

刚毕业的时候改 app 里的 [关于我们] ,结果把公司大佬们的介绍人名资料和头像映射错了🤣

属性名 id 改 ID ,忘了做映射,导致进入商品详情没 id 取不到内容。。

emmm...经常自己防火墙防住了自己..

生产手机的时候给一大批机器写了相同的 wifi 地址

抽奖规则,没走缓存。 导致抽奖服务器 mysql 顶不住。 虽然不是我写的 bug

精彩精彩

活动有个条件,包含和不包含的逻辑,当时的代码if(inList.contains(id)) || !notInList.contains(id)){ // TODO}上线之后,没有配置不包含的条件,notInList 为空,导致所有的产品都参与活动了
导购卖东西,发激励。激励规则很多,其中有个产品线,但是没有维护产品线的商品会匹配所有激励规则,导致超发 3w 块钱

以前游戏都是套壳,有一次更新游戏服务端,没清缓存,结果把游戏 A 的资源文件更新到游戏 B 了,B 玩家发现自己有了游戏 A 的道具,简直惊呆了

我虽不是技术,但是以前做 P2P 业务的时候,有个技术同学写了一个 bug ,导致用户提现会出现重复的情况。。那会我们是自己的后台系统调支付公司的代付接口,所以自己系统的 bug 导致支付公司多付出去了几千万。。一个个打电话去追回来,还好最后资损比较小,那会公司钱也赚的多,不在意。但是问题是真的很严重。后来我支付公司账户上再也不敢放那么多钱了。

update 没加 where 条件,改了整张表的数据

  1. 客户端定时来服务器拉数据,但访问服务器的地址是可配置的,有次新开服务器用了内网的地址,直接发布过去了,于是客户端修改了下次请求的地址成了内网地址,再也连不回来了2. 领取奖励忘了改数据库,无限领取奖励

    #14 所以我习惯使用./开头

    #50 还不是 一个同事写的 node package.json 自己改的。。。

刚刚毕业把抽奖逻辑放在前端 被人撸羊毛了 损失了好多钥匙挂件

写 Laravel ,连的生产环境,直接 php artisan migrate:refresh 了,最后靠阿里云的 RDS 自动备份恢复了

笑死我了,有种看知乎的感觉了

曾经在 XX 银行工作,因为后台接口的客户五项信息是可写的, 我的一个 Bug 把 137 个男客户的性别改成了女人,如果他们去办卡的话。。。。。

rm -rf /* 删除了准生产环境东西 服务器还能连接 但是东西都没有 还好我机智 说我想重新搭建一遍

游戏项目 if 判断错误 弄得可以无限刷金币 直接没了 10%的流水 关键是 sb 玩家还把金币都花了 没法追回

刚刚毕业的时候,维护一个长沙市级政府平台,很多商户往这个平台上报数据,写了个功能删除数据,用的 mysql ,然后 where 条件加少了,把线上数据都删了,幸好 dba 连夜加班恢复,后面写 delete 语句都唯唯诺诺了

经理让我清理脏数据,忘了加范围,直接改了全表

以前使用 CMS 给客户做了一个新闻站,让一个新来的小伙做。客户反馈用了一段时间后,首页很慢,心想才 10 来个栏目,就算不用缓存也不会慢啊,结果一个小伙写的逻辑,每个栏目取前 10 条新闻。伪代码如下list1 = select from news where 栏目 = xxxcount = 0for l in list1 count ++c = min(10, count)list2 = select from news where 栏目 = xxxresult = new listcount = 0for l in list2 count ++ if (count <= c) result.add(l)return result我只能感叹一句,我 X ,逻辑毫无破绽

#55 你这活,一般人还干不了

逻辑鬼才

来晚了早年给 CMCC 做外包,更新了一个系统服务后 忘了启动,导致从那天下午到晚上发现,全市所有移动手机都没收到 10086 下发的短信

更新 iOS 消息推送后端程序,用的是多线程,用 Redis 做的缓存池。消息推送成功以后,没有及时清除,导致推送程序以为还没推送成功。结果就是 1w 多台设备,每台设备收到 1000 多个推送,中午午睡的时候被人打电话叫起来,上去关了程序,要不然每台设备能收到 1w 多个推送。

#10 哈哈哈笑死,我也干过这事儿

#78 哈哈哈,就问你能不能用~

内部系统,sql 的 where 条件我自作聪明的,如果任何条件都没填,就去掉 where 。。。然后这帮天杀的,还真的啥过滤都给取消了,然后大表查询就卡死了。。

上市公司,刚入职 2 周,前面那个人的离职的时候改了一半,我入职就接着他的 git 分支继续写,有个页面他只改了一半,需求变了,不用改了,结果我也没发现,测试也没发现,提现页面直接白屏打不开了。下午 3 点上线,一直到第二天早上 10 点发现有客户投诉,我定位了下发现这个页面不是我改的,一看提交记录是我入职之前就提交了,最后喜提一个 T0 级别的 BUG ,导致很多客户以为公司跑路了,影响很大,领导写了整整 3 页的报告给上面交代我的问题,导致后面我每次上线领导都特别嘱咐测试多测测我的问题,最好能全部回归一下最后公司效益不好,裁员的时候我第一个被裁,我至今想起来也感觉不公平,真想给之前那个前端来一锤子

我同事也干过这事, 交易软件, 做多按钮实际是做空, 做空按钮实际是做多, 还好那个涉及的品类持仓成本很高, 交易不活跃, 没客户发现后来我们强制发版, 改回来了

再说一个同事的,之前一家公司是做灰产的,也没测试,代码都非常随意,一天晚上更新一个关于广告开关的问题,结果同事改完的时候开关没打开,导致一晚上广告没展示,也没人发现,看了下流水损失一辆宝马吧,因为老板开的宝马(当时灰产流水非常高)但影响不大,因为当时项目非常赚钱,一辆宝马老板也不怎么在乎。。

从业十几年来唯一的一次线上 bug ,也不算地动山摇大概是七八年前的事,就是搜索页面只能加载第一页数据,无法加载后面页数还好上线第一页就发现了,做了紧急修复,当季度绩效也没有因此打低自那之后,开发完任何功能后都会乖乖自测一遍

搞客户端,某个查询触发频率过高,差点给机房干爆( 400W 在线)

怎么做到的?

想起了才开始写 cloujure 的时候 partition/partition-all 每次数据随机丢失/丢失个数随机/顺序随机

当年没确认好就加了一个约定好的参数,结果全站视频全线崩溃,都看不了了。

#11 我也想知道,原因是啥

rm -rf /

提交代码时忘记删除调试代码了,内容为每轮循环都会在固定位置保存一个数据文件

不算 BUG ,算是失误,把一个商家的用户资产数据(可以理解为储值卡余额数据)迁移到另一个商家系统里去了。然后商家用了一个发现他的顾客储值卡的钱怎么多了那么多,然后为了修复这些数据,熬了两个通宵,差点被开除

刚毕业一年的时候,用 python 写脚本,本来想遍历 list 的,伪代码如下for i in [a1,a2,a3]: os.system('reboot {}*'.format(i))然后我传了一个字符串,遍历成这个字符串的每一个字母了导致我测试脚本效果时候,直接就误重启一堆测试机器 ,故障了,万幸这是测试环境(还是强类型好...

文件转码目录配置到了系统文件目录转码成功后自动删除临时目录,直接给系统文件一起删了,约等于删库。。。还好没正式上线

前前前公司曾经出过一次惊天大 bug ,但不是我,而是一个后端同事搞的电商公司,本来有个小活动,发 50 块无门槛优惠券,限制了名额只有几十个结果后端代码没限制好,发出去几千张之后才发现问题直接惊动老板,老板只能亲自拍板:发出去的优惠券都不会追回,避免影响口碑然后这个哥们肯定是开除了,没让他赔偿