V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whooami
V2EX  ›  程序员

敢不敢说说你曾经写过那些地动山摇的 BUG?

  •  
  •   whooami · 166 天前 · 16924 次点击
    这是一个创建于 166 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    189 条回复    2023-11-30 17:09:58 +08:00
    1  2  
    tracymcladdy
        101
    tracymcladdy  
       165 天前   ❤️ 11
    省公务员考试报名系统
    10 年前,没有云服务,机房自己部署自己压力测试,同事为了在机房快速删掉每次压测的几十万条数据,写了个没有任何令牌和参数的 /clear 方法。
    我没有审查代码,导致生产环境把这个方法部署了上去。
    第一年没事,第二年被恶意扫描命中了这个方法,导致生产环境考生数据全部丢失(备份是一天前的)
    直接导致省公务考试报名暂停两天天,我 2 天没睡觉通过操作日志写脚本恢复丢失的数据( aop 切了所有考生提交的 url 和参数,入操作日志审计表)

    从此以后不碰政治性强的面向公众的政府业务(那几天,天天和人社厅厅长开会,还被条子各种怀疑和调查)
    NCZkevin
        102
    NCZkevin  
       165 天前
    来晚了,说两个遇到的故障
    1. 做国外业务,货币单位触发遗留 bug 搞错了,当天超发了一大笔钱,幸好及时追回,否则资损够雇几百个程序员干活了
    2. 超过十万+核的 K8S 集群,所有 master 被下线,在重装前被发现,及时恢复,影响所有服务的变更,如果被重装了估计得跑路了
    afx
        103
    afx  
       165 天前
    @wu00 我也干过
    orange323787
        104
    orange323787  
       165 天前
    用户注册的一个流程少加了一个判断,导致走这个流程注册的用户都无法注册成功,万幸是没多少人用,要不然真 gg 了
    wizzer
        105
    wizzer  
       165 天前
    遇到几次了,总有同事写 select * from table ,然后运行一段时间后,数据量上来了,只要执行到这里系统就挂。
    xiaoao4568
        106
    xiaoao4568  
       165 天前
    线上改 bug ,把同步改成并发来缩短处理时间,本地测完匆忙上线,结果 go 并发没控制好,疯狂重复发送游戏道具。

    调用第三方接口的 mock 判断有问题,在灰度环境刷新用户数据,把 mock 数据给所有线上用户刷上了。
    abelmakihara
        107
    abelmakihara  
       165 天前
    这就是做前端唯一的好处了 好像还真没有过于严重的 bug..
    yxisenx
        108
    yxisenx  
       165 天前
    测试环境调一个外部 api 不要钱,写的每秒更新,但是上线要收费了,按调用次数收费,线上也是每秒调用一次,没了几千块
    invadv
        109
    invadv  
       165 天前 via Android
    没影响别人。自己做量化更换策略直接上实盘,止损方向打反了,当晚碰到极端行情,爆仓了
    ddv12138
        110
    ddv12138  
       165 天前   ❤️ 2
    刚毕业去的第一家公司,某天下午我 leader 当我面在生产环境执行 sql ,
    直接一个 where 1=1 的 update ,唰一下,很快啊,七百多万数据全更新了,变成七百多万一模一样数据
    我当时看我 leader 汗就下来了
    于是那天我被拉着还原数据搞到十一点
    spicy777
        111
    spicy777  
       165 天前
    1.一个领取游戏 cdkey 的功能,限制没做好,被刷了价值几百万的 cdkey
    2.游戏发红包功能,小额的 5 块被刷了将近 2w ,持续了将近两天才发现
    924412409
        112
    924412409  
       165 天前
    @zsh2517 #18 没看懂 这段有啥问题吗
    KING754
        113
    KING754  
       165 天前
    @boboaiya3 这个锅,你背无疑呀。而且不是锅,却是你有问题。对外的东西 ,加,减字段怎么能想当然没事呢。
    xiaoranj
        114
    xiaoranj  
       165 天前
    @cnhongwei 突然想到 GTA5 启动加载
    weiwenhao
        115
    weiwenhao  
       165 天前
    https://www.v2ex.com/t/994554 我还发了个帖子标识震惊。
    fantathat
        116
    fantathat  
       165 天前
    update limit 1 前手滑了个分号然后没看到 ctrl enter 提交了
    zdt3476
        117
    zdt3476  
       165 天前
    我写的一个 bug ,但是触发的时候离职了,是同事善后的。 游戏里面退款之后要注销账号,注销账号要清除好友关系。传参的时候传错了,导致把要注销的账号的好友的好友给清除了。
    kiddingU
        118
    kiddingU  
       165 天前
    线上用了 redis keys 把集群搞崩了~~
    jtcc
        119
    jtcc  
       165 天前
    调用了一个外网的 API 判断手机的 IP 地址所属
    测试的时候一直正常
    后来我请婚假了
    婚假期间游戏上线, 同时 API 被墙
    导致所有玩家要卡 50 秒左右才能进入游戏
    还没有人发现这个 Bug, 以为是 SDK 的问题
    后来我回来就改了
    被一个测试人员发现
    被狠狠地怼了一顿
    zhao666666j
        120
    zhao666666j  
       165 天前
    @wu00 #10 我也干过这个事
    kenilalexandra
        121
    kenilalexandra  
       165 天前
    while True ,然后一直往池子里面新增线程数,最后卡死了,排查了好几天哈哈哈哈哈
    snitfk
        122
    snitfk  
       165 天前
    @hiphooray 没有用 IDE 吧。不然直接就会提示错误了。
    alleluya
        123
    alleluya  
       165 天前
    @zsh2517 好家伙 我不是选中底色变了我都没看出来
    weiwenhao
        124
    weiwenhao  
       165 天前
    17 年实习的时候,我维护一个微信收银系统,在 review 代码的时候发现一个前人写的 bug 。

    大致逻辑是扫描微信付款码后 60s 没有收款成功的话,则订单接口收银屏幕上提示订单支付失败,如果已经失败的订单收到付款则调用退款接口。然后我就发现有个 if 判断写反了,导致已经失败的订单没有调用到微信退款接口,所以我就修复了这个 bug ,也和 leader 反馈了。

    结果第二天晚上,就有商户打电话投诉过来,你们的收银系统怎么自动退钱给用户了?于是当晚就坐车去到商家店铺实地考察(这也是第一次去客户驻场)。

    现场考察后发现用户出示收款码给商家扫码以后,商家迟迟收不到钱,于是商家提示用户输入一下密码,就这样磨磨唧唧过了 60s 之后,系统提示商户付款失败,请重新扫码付款。 用户输入完密码后则有微信付款成功的界面,用户把这个界面给商家看了之后就走了(这非常的合情合理),商家也没有管订单失败让用户走了。 直到有一个用户收到退款之后回来找到商家,你怎么退款给我了?

    这个 bug 在我看来非常的严重,毕竟是关于到钱的,具体损失了多少钱没有统计过。虽然我的 leader 笑嘻嘻说没关系,习惯就好。但是我依旧非常的自责,没有多久就引咎辞职了(当然辞职也和加班比较多有关)。
    shench
        125
    shench  
       165 天前
    在数据库软件里操作数据,结果不知道什么时候对一张表按了 del ,过一会儿作别的操作的时候 ctrl+s 一起把那张表删除了。。。
    whooami
        126
    whooami  
    OP
       165 天前
    看出来了,大家都是身怀绝技啊
    pujx233
        127
    pujx233  
       165 天前
    感觉有些 bug 应该在提测的时候就能发现吧……太恐怖了
    kratosmy
        128
    kratosmy  
       165 天前
    配置中心把生产环境和测试环境数据库密码搞反了,挂了半小时
    gowinder
        129
    gowinder  
       165 天前 via iPhone
    delete sometable where id=id
    Cccczzz7
        130
    Cccczzz7  
       165 天前
    写 excel 表格求和的时候 sum 少拉一行,记账的时候差点少了二十万,还好第二天发现了
    LinYaXuan
        131
    LinYaXuan  
       165 天前
    下午开了个新服务,配置 nginx stream 反向代理,开服务器防火墙。一致访问不了。nginx 没日志。
    感觉是防火墙假了,反复重启。
    最后,哦,我 nginx 在 docker 里啊。
    xiangpeng
        132
    xiangpeng  
       165 天前
    update 某个配置表,忘记写 where 条件了……还好有开发给还原了
    fenddddddda
        133
    fenddddddda  
       165 天前
    看到过其他人的 BUG:
    密码如果大于 17 位会给截断,并且没任何提示。
    用户注册成功后...输入自己的密码一直提示密码错误,Server 排查很久..一直没找到问题,最后是客户端的问题。
    ColoThor
        134
    ColoThor  
       165 天前
    @zsh2517 #18 <li> => </li>
    ColoThor
        135
    ColoThor  
       165 天前
    @zsh2517 #18
    ```
    <li> => <li>
    ```
    ColoThor
        136
    ColoThor  
       165 天前
    @zsh2517 #18
    ```html
    <li> </li>
    ```
    jiayouzl
        137
    jiayouzl  
       165 天前
    @hiphooray if i=1 这代码压根都跑不起来,而且执行就会报这是第几行的错误,一大帮人找一晚上的 bug?逗呢
    lawler
        138
    lawler  
       165 天前
    我的一个 BUG 。

    ``
    Order queryOrder(customer); # 查询客户订单,如果有返回客户订单
    Order createOrder(customer); # 新建客户订单,创建一个全新的订单并返回
    Order fillOrder(orderOld,orderNew);# 客户订单数据填充,如果没有历史订单,就用新的订单,返回填充好数据的订单
    ``

    我的业务代码
    ``
    Order order = fillOrder(queryOrder(customer),createOrder(customer));
    ``


    一个季度后,因支付中心向在狂欢中的业务中心汇报了,成交额稳定,成交率脚踝斩的极限数据,才知道有问题。
    hiphooray
        139
    hiphooray  
       165 天前   ❤️ 1
    @jiayouzl 我的错我的错!是 C 写的 ROS 程序,那段时间 C 和 Python 混着用,所以记错了。
    evil0harry
        140
    evil0harry  
       165 天前
    @chenalex #87 这个没让测试测吗?测试的锅
    1044523901
        141
    1044523901  
       165 天前   ❤️ 2
    某同事 把用户手机相册内容删掉......
    oneisall8955
        142
    oneisall8955  
       165 天前 via Android
    dev 环境,某些条件下导致条件全无,变为更新全表,吓死宝宝😂
    iamppz
        143
    iamppz  
       165 天前 via iPhone   ❤️ 2
    小弟帮老板干活把甲方 git 服务器给格式化了,幸好当时我请假了,全程没参与
    DT37
        144
    DT37  
       165 天前
    新公司更新一个批量缴费的功能,条件 id 写错,导致缴费出问题。
    Enzoliu
        145
    Enzoliu  
       165 天前
    @wu00 #10 我也干过这事...
    Enzoliu
        146
    Enzoliu  
       165 天前
    @wujichao #11 笑死,哈哈哈哈哈
    AS4694lAS4808
        147
    AS4694lAS4808  
       165 天前 via Android
    同事的 bug ,从上游供应商读取到的全价机票价格和折扣,遍历计算的时候角标错了,商务舱变成了 2 折优惠,比经济舱都便宜。最后老板拍板赔了十几个 w
    Enzoliu
        148
    Enzoliu  
       165 天前
    @GeekGao #54 哈哈哈哈哈哈哈哈,回复官方:我们在偷偷摸摸做大事!!
    Enzoliu
        149
    Enzoliu  
       165 天前
    @masterclock #55 还缺人吗?我想去挑战自我...哈哈哈
    Enzoliu
        150
    Enzoliu  
       165 天前   ❤️ 1
    @justin2018 #70 可以跟我合作一下,你负责写 bug 和道歉,我负责薅羊毛,最后拿到的好处咱们 55 分,哈哈
    iluckypig
        151
    iluckypig  
       165 天前
    @masterclock 哈哈哈哈,你这工作壁垒有点高啊
    Enzoliu
        152
    Enzoliu  
       165 天前   ❤️ 1
    2015 年,做运维,在一个软件外包公司工作(第一份工作)
    技术总监发给我一个文件夹,让我把里面的内容替换到线上
    我感觉手动执行太累了,于是把意思转达给了另外一个经验丰富的运维大佬,让他给写个脚本,我准备批量执行
    后来脚本里面的 cp 命令写错了,本该替换到 B 文件夹的文件,全部强制替换进了 C 文件夹
    线上几百个交易系统当时就炸了,整个公司上百号人连续加班两三天才勉强给恢复好

    2020 年,做 php 开发,某个活动的购买逻辑本来是正确的,在上线前测试非说购买逻辑写反了,我于是想都没想直接把 = 改成了 !=,上线后大概等了三天才发现这个问题,老板给我发消息,深夜打车回公司修 bug ,公司亏损好几万 RMB ,隔了没多久我就被裁掉了...

    2022 年,做 go 开发,把测试环境和正式环境数据库搞混了,把线上环境的某个表清空了... 发现不对劲,5 分钟内就恢复了,弄完后瘫软在凳子上冒冷汗... 幸亏当时用户量不大 且没人发现

    ...
    wjfz
        153
    wjfz  
       165 天前
    以前做 p2p 的时候经常出跟钱的错。

    同事 A 付息多付了据说一百万。
    同事 B 放款多放了 30 万。
    本人重复收了 80 个左右的用户的还款,运营打电话挨个退。

    前阵子还出了个啥错来着,已经快想不起来了。只记得早上 9 点被电话叫醒,边补救边抽烟,由于紧张+早上抽烟缺氧,上厕所眼前一晕倒下去了。倒下的时候磕到了眉骨,磕醒了。
    quirkybird
        154
    quirkybird  
       165 天前 via Android
    @zsh2517 ide 不会报错?
    enchilada2020
        155
    enchilada2020  
       165 天前
    好家伙这贴看得我心惊胆战的。。
    TinyBBC
        156
    TinyBBC  
       165 天前
    某公司的 saas 服务,某次故障导致消息队列从头到尾重发了一遍,客户的客户一个人最多收了几千条短信,由于是 saas 服务,厂商自己买单了,目测几万块。
    opengps
        157
    opengps  
       165 天前
    @wujichao 类似的事我干过,手欠把缓存 session 的变量写成了 static ,接下来的几十分钟所有人登录都在看第一个人的信息
    macha
        158
    macha  
       165 天前
    客户端 bug ,拷贝文件写的相对路径,导致拷贝不到正确的地方。
    最关键是这个文件是升级程序,所以那个版本的客户端有部分用户升级不上去。导致每天都会升级一次,浪费了很多流量。

    当然这个 bug 不是我写的。
    NX2023
        159
    NX2023  
       165 天前
    @Ericcccccccc #29 所以说 Golang 改进了 C 里面的一堆问题,21 世纪的 C 语言( bushi
    whooami
        160
    whooami  
    OP
       165 天前
    据说是某个新人的代码,看完之后感慨还好只是试用 1 天的权益活动,要是试用 1 年……,不敢想。
    ```
    //获取明天当前时间
    public Date getTomorrowThisTime() {
    try {
    Thread.sleep(24 * 60 * 60 * 1000L);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    return new Date();
    }
    ```
    RainCats
        161
    RainCats  
       165 天前
    这是段子来的吧,怎么会真的有人写休眠这么久
    Ericality
        162
    Ericality  
       165 天前
    一次在 debug 的时候发现用 springboot 框架的 @Scheduelr 注释是单线程运行的(默认配置)
    于是提了个优化 把以前设计的时候就多线程的定时器配置好异步 然后建一个线程池让他们确保定时间隔准确性
    然后第二天版本上生产 导致其中一个功能直接失效 影响作业了
    于是喜提人生中第一张致命程度问题单
    于是紧急 debug 几天后(因为日志改了路径 一直没找到 就拖了下来)找到了原因 一位离职的同事写了如下代码:

    // 多实例情况下,单实例抢占以后就不释放,可重入锁,单个线程可以重复获取
    redisLockHelper.lock(Constants.XXX)
    后面没有解锁

    之前因为一直是默认的单线程运行 反正这个线程被销毁后它持有的锁就无效了 所以也就无所谓 但是改成异步多线程的时候这个位置就会一个线程把别人都锁住了 然后就没法执行了
    于是就紧急加了 try catch finally 解锁了
    虽然是前人拉的 shit 但是因为是我优化之后出现的问题 于是这个锅就扣我头上了....
    好在客户那边没啥影响 他们领着死工资 主打一个能用就行 能规避就行...
    duke807
        163
    duke807  
       165 天前 via Android
    if (rx == rx && bit_cnt == 9) begin

    这一句的 bug 能看出来不?
    这个代码是用在 cpu 芯片里面的,投一个芯片也就几千万而已,外加耽误 1 年的时间

    https://github.com/dukelec/cdbus/commit/3fd507139cbe5e2a299ea98831b880fcba298443
    YassoWithSpeaker
        164
    YassoWithSpeaker  
       164 天前
    新到一个直播公司,然后每个月初会统计主播收入,需要前月数据 31 号到另一个月 31 号,前面不知道谁写的有 bug ,需要回滚,然后回滚的时候 orderby 写反了,导致数据回滚失败,越描越黑。
    richangfoo
        165
    richangfoo  
       164 天前
    我们公司的一哥们负责充值系统开发
    上线迭代了两个版本 平稳没有什么问题 以为就此无事 天下太平
    谁知道有一天 大 boss (技术出身) 来了一个负金额充值操作
    神奇事发生了 竟然可以把用户的金额充减了
    事件 测试和开发哥们被记一大过 (幸好是在公司内部及时发现 没造成损失 开发和测试 也没被开...)
    这个 bug 永远不会被关闭 以警示后人
    totoro52
        166
    totoro52  
       164 天前
    @lingex #14 《我装听不懂》
    zsh2517
        167
    zsh2517  
       164 天前
    @quirkybird 试了一下,我这 vscode 确实没报错,当时好像也是 vscode 的截图。
    而且 HTML 向来以语法要求宽松著称(说好听点就是能兼容各种奇奇怪怪的写法( x
    zsh2517
        168
    zsh2517  
       164 天前
    突然想起来之前看到的一张梗图,虽然和 `<li>xx<li>` 不完全一样,但是有点类似
    ( imgur 上传好像有问题,我直接贴代码吧)

    仔细读一下函数的注释的区间。(如果有代码高亮会好很多,没有高亮的话很容易把后面当成跨行注释而前面是代码)

    ```js
    function test() {
    const a = 1; /* set variable a to 1
    const b = 2; set variable b to 2
    const c = a + b; set variable c to a + b
    const d = a - b; set variable d to a - b
    console.log(c, d); print variable c and d */
    }
    ```
    @924412409
    @alleluya
    @whooami
    zsh2517
        169
    zsh2517  
       164 天前
    @zsh2517 (有很多空格的,但是被吞了;脑补一下注释部分左对齐
    lovelylain
        170
    lovelylain  
       164 天前 via Android
    多年前刚入职的时候,程序没在代码上防止重复运行,运维的包启动脚本不完善,然后重复运行了,写乱了共享内存。花了一个晚上从冷备恢复共享内存,再从另一份不同的数据构造补上缺失的一天数据。
    solitude511
        171
    solitude511  
       164 天前 via Android
    @wu00
    找到了同类
    kanepan19
        172
    kanepan19  
       163 天前
    说身边的。
    一哥们多线程没控制住,导致重复下单, 导致资损 50 多 w
    还有一哥们,按金额下单,多写了个零, 上线赔了 8w
    quirkybird
        173
    quirkybird  
       163 天前 via Android
    @fields 然后找半天错
    billma
        174
    billma  
       163 天前   ❤️ 2
    死去的回忆突然复活...1999 年的时候用 VB 写了个财神到彩票预测的小工具,在算法里,要实现递归,结果没注意,局部变量和全局变量都用了 i ,一直没发现这个 bug ,2000 年的时候有一次预测给出了 25 注,要 50 元巨款,省了一周,又借了 20 块,才凑到了 50 块,结果中了 500 万...2001 年的时候高高兴兴拿着这笔巨款去英国上大学了...
    boboaiya3
        175
    boboaiya3  
       163 天前
    @KING754 谁会减字段?都是往里面加,我加一个字段,其他服务(没用到这个字段)会报错吗?老哥是不是没 code 多久
    boboaiya3
        176
    boboaiya3  
       163 天前
    @KING754 有些 dubbo 接口,比如 user 类的,几百个服务可能都会调用,你加个字段,难道把这些服务都给回归下?你不管在数据库表里面 加字段,还是 在接口返回对象里面加字段,都是不需要考虑太多的操作
    lyxxxh2
        177
    lyxxxh2  
       163 天前
    多活动分库
    lyxxxh2
        178
    lyxxxh2  
       163 天前
    一个多活动被我做一堆 bug (每个店铺一个活动那种)

    1. 用的 session 做店铺标识,却不知道微信支付回到没 店铺标识
    2. 店铺 logo 被替换或者被删除。 比如店铺 1 的 logo 是 1.jpg 店铺 2 的 logo 也是 1.jpg 。
    jefferyJQ
        179
    jefferyJQ  
       163 天前
    多线程查询数据库调用三方接口,然后有一次三方接口返回的数据超过了数据库字段限制。导致死循环,刷了 1000 多给三方
    huBane
        180
    huBane  
       163 天前
    之前帖子挂着忙其他事情去了,今早上班刷新了一下看完剩下乐死我了,上班摸鱼快乐源泉。
    ZoR
        181
    ZoR  
       163 天前
    想起毕业刚工作那会儿,去支持一个全国性质的比赛,算平均分的算法有 bug ,统计后算出的分不对,没人发现,偷摸着在后台把 bug 修复了,当时汗都出来了
    guxin0123
        182
    guxin0123  
       163 天前
    @caozhengi 我说我 15 年办的农行卡 性别怎么是错的。。。。
    xiandao7997
        183
    xiandao7997  
       162 天前
    @billma 这不是 bug, 这是 feature...
    wweerrgtc
        184
    wweerrgtc  
       162 天前
    @billma #174 老哥如今在哪个国家生活, 加拿大吗?
    whooami
        185
    whooami  
    OP
       162 天前
    @billma 大哥,别人写的叫 BUG ,你写的叫 RMB
    whooami
        186
    whooami  
    OP
       162 天前
    @guxin0123 破案了哈哈
    leo747604
        187
    leo747604  
       162 天前 via iPhone
    还记得那时候服务器天天被攻击, 直接设置 UFW 只允许路由器获取到的 IP 访问, 没想到第二天 IP 变了…
    ruifeng
        188
    ruifeng  
       161 天前
    @xiri 入职第一步,先把代码规范、运维规范,各种标准文档放进回收站,你就是不可替代的
    qianjian
        189
    qianjian  
       159 天前
    @GeekGao hhhhh
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5637 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 05:45 · PVG 13:45 · LAX 22:45 · JFK 01:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.