• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xiangyuecn
V2EX  ›  程序员

稳定复现,看我几行代码搞崩 Chrome

  •  7
     
  •   xiangyuecn ·
    xiangyuecn · Mar 10, 2022 · 22663 views
    This topic created in 1699 days ago, the information mentioned may be changed or developed.

    搞崩 chrome 测试页面: https://xiangyuecn.gitee.io/recorder/assets/ztest_chrome_bug_AudioWorkletNode.html (打开后可能需要右键刷新一下页面)

    过程分析记录: https://www.cnblogs.com/xiangyuecn/p/15988061.html

    最新的 chrome 97 打开测试页面测试后每次都会崩溃,最开始发现的 chrome80 也会崩溃(不过测试页面反而不会崩了),古董版本 66 70 不会崩溃,更老的不支持 AudioWorklet 不用测试

    这个崩溃现象也就是在特定时机才会出现,FireFox 测试的完全没有这个问题

    [×]提交 bug

    [√]v2ex 发帖

    测试页面截图:

    崩溃截图:

    158 replies  •  2023-04-10 00:38:43 +08:00
    1  2  
    ❮ ❯
    learningman
    learningman
    Mar 10, 2022
    1
    Edge latest 复现成功
    28Sv0ngQfIE7Yloe
    28Sv0ngQfIE7Yloe
    Mar 10, 2022
    2
    复现成功
    densuc
    densuc
    Mar 10, 2022
    3
    Edge 92.0.902.55 未复现
    ZeIda
    ZeIda
    Mar 10, 2022
    4
    复现成功 chrome 版本 99.0.4844.51 (正式版本) (x86_64)
    ZField
    ZField
    Mar 10, 2022
    5
    Edge 99.0.1150.36 未复现
    superszy
    superszy
    Mar 10, 2022
    6
    Chrome 99.0.4844.51 (正式版本) (64 位)
    Edge 99.0.1150.36 (正式版本) (64 位)

    可以复现
    mengyx
    mengyx
    Mar 10, 2022
    7
    MS Edge 99.0.1150.36 刷新两次后成功复现
    zu1k
    zu1k
    Mar 10, 2022 via Android
    8
    报告给 chrome 团队吧,说不定可以被利用,几万块直接到手不香嘛
    dzdh
    dzdh
    Mar 10, 2022
    9
    chrome 99.0.4844.51 复现
    fanxasy
    fanxasy
    Mar 10, 2022
    10
    Microsoft Edge
    版本 99.0.1150.36 (正式版本) (64 位)

    [10:54:25.877]完成,浏览器正常,没有崩溃
    Kridlo
    Kridlo
    Mar 10, 2022
    11
    版本 99.0.4844.51 (正式版本) (arm64)
    第一次没成功,第二次复现成功
    inhons
    inhons
    Mar 10, 2022
    12
    Chrome 101.0.4934.2 (正式版本) canary ( 64 位) 没蹦
    Vivaldi 5.1.2567.57 (Stable channel) 内核:98.0.4758.121 ( 64 位) 没蹦
    zhentoujun
    zhentoujun
    Mar 10, 2022
    13
    Microsoft Edge 版本 99.0.1150.36 (正式版本) (64 位)——可以复现

    Firefox Nightly 100.0a1 (2022-03-09) (64 位)——未能复现
    cutiechi
    cutiechi
    Mar 10, 2022
    14
    Edge 99.0.1150.36
    Chrome 99.0.4844.51

    稳定复现
    shakoon
    shakoon
    Mar 10, 2022
    15
    Cent Browser 版本 4.3.9.248 (正式版本) ( 32 位) (Chromium 86.0.4240.198) 表示崩了
    inhons
    inhons
    Mar 10, 2022
    16
    @inhons #12 补充说明:右键重新加载页面后崩了
    ab
    ab
    Mar 10, 2022 via iPhone
    17
    我要拿来反调试😂
    kingme
    kingme
    Mar 10, 2022
    18
    Microsoft Edge
    版本 99.0.1150.33 (官方内部版本) Beta(x86_64)

    macOS 11.6

    复现
    leavic
    leavic
    Mar 10, 2022
    19
    firefox 97.02

    [11:04:45.683]完成,浏览器正常,没有崩溃
    [11:04:45.382]4 ctx.state=running
    [11:04:45.381]构造时没崩溃,等待浏览器崩溃 2...
    [11:04:45.381]开始构造 AudioWorkletNode ,等待浏览器崩溃 1...
    [11:04:45.381]3 ctx.state=running
    [11:04:45.274]2 ctx.state=running
    [11:04:39.713]请随便点击一下页面,激活 AudioContext ,感觉要崩
    [11:04:39.713]state 是 suspended ,感觉这次要崩
    [11:04:39.712]1 ctx.state=suspended
    [11:04:39.704]代码开始执行...
    [11:04:39.704]请打开控制台进行观摩,不然崩溃后看不到页面内容
    tvirus
    tvirus
    Mar 10, 2022
    20
    nothing happened
    Version 98.0.4758.80 (Official Build) (64-bit)
    Valid
    Valid
    Mar 10, 2022
    21
    一个 while 也能蹦
    youthfire
    youthfire
    Mar 10, 2022
    22
    Safari 玩了下,没有崩
    xiangyuecn
    xiangyuecn
    OP
    Mar 10, 2022
    23
    @zu1k #8 有提交地址没,发一个😁 不知道从哪里提交有机会得奖金😂
    lx0758
    lx0758
    Mar 10, 2022
    24
    Microsoft Edge
    版本 99.0.1150.36 (正式版本) (64 位)
    codehz
    codehz
    Mar 10, 2022 via Android❤️1
    25
    Chromium 修崩溃速度很玄学,之前报了一个 https://bugs.chromium.org/p/chromium/issues/detail?id=1207317 一直都不给修(不过可能和 windows 平台专属有关系)
    ochatokori
    ochatokori
    Mar 10, 2022
    26
    版本 99.0.4844.51 (正式版本) ( 64 位)( linux )没崩,刷新几次也没崩
    DawnMoon
    DawnMoon
    Mar 10, 2022
    27
    Edge 崩了,Firefox 没崩
    ochatokori
    ochatokori
    Mar 10, 2022
    28
    附上日志
    [11:19:11.834]完成,浏览器正常,没有崩溃
    [11:19:11.534]构造时没崩溃,等待浏览器崩溃 2...
    [11:19:11.534]开始构造 AudioWorkletNode ,等待浏览器崩溃 1...
    [11:19:11.533]3 ctx.state=running
    [11:19:11.517]4 ctx.state=running
    [11:19:11.503]2 ctx.state=suspended
    [11:19:07.366]请随便点击一下页面,激活 AudioContext ,感觉要崩
    [11:19:07.365]state 是 suspended ,感觉这次要崩
    [11:19:07.365]1 ctx.state=suspended
    Finnn
    Finnn
    Mar 10, 2022
    29
    ![1646882530]( )
    ykk
    ykk
    Mar 10, 2022
    30
    firefox 正常
    lance6716
    lance6716
    Mar 10, 2022
    31
    manjaro KDE Chrome Version 99.0.4844.51 (Official Build) (64-bit)
    一直不会崩
    mopig
    mopig
    Mar 10, 2022❤️1
    32
    控制台打开就不会崩,控制台关闭才崩。
    Hug125
    Hug125
    Mar 10, 2022
    33
    vivaldi 复现了 版本 5.0.2497.48 (Stable channel) (arm64)
    操作系统 macOS 版本 12.0.1 (版号 21A559 )

    ![ui2IUd_2022-03-10_11:43:01_SikwIG]( https://raw.githubusercontent.com/Hug125/ImgCloud/main/uPic/png/ui2IUd_2022-03-10_11:43:01_SikwIG.png)
    CheckTime
    CheckTime
    Mar 10, 2022
    34
    99.0.4844.51 (正式版本)
    刷新后立马点击会崩,但是刷新后稍微等几秒再点就不会崩。
    c978R77Le1z2f8u9
    c978R77Le1z2f8u9
    Mar 10, 2022
    35
    Version 99.0.4844.51 (Official Build) (x86_64)
    不会崩
    492
    492
    Mar 10, 2022
    36
    版本 99.0.4844.51 (正式版本) ( 64 位)

    成功
    whitehack
    whitehack
    Mar 10, 2022
    37
    mac 版本 98.0.1108.51 (官方内部版本) (x86_64)
    崩了
    492
    492
    Mar 10, 2022
    38
    @492 发现情况是偶发的,第一次是绝对崩溃。刷新第二次就不会。
    zu1k
    zu1k
    Mar 10, 2022 via Android❤️1
    39
    @xiangyuecn 24 楼有样例
    nyakoy
    nyakoy
    Mar 10, 2022
    40
    [11:54:57.695]完成,浏览器正常,没有崩溃
    [11:54:57.394]构造时没崩溃,等待浏览器崩溃 2...
    [11:54:57.394]开始构造 AudioWorkletNode ,等待浏览器崩溃 1...
    [11:54:57.394]3 ctx.state=running
    [11:54:57.386]4 ctx.state=running
    [11:54:57.386]2 ctx.state=running
    [11:54:56.795]请随便点击一下页面,AudioContext 已是 running 状态,应该不会崩
    [11:54:56.795]state 已是 running ,这次应该不会崩,刷新一下页面看看 state=suspended 时容易崩
    [11:54:56.795]1 ctx.state=running
    [11:54:56.786]代码开始执行...
    [11:54:56.786]请打开控制台进行观摩,不然崩溃后看不到页面内容
    [11:54:56.786] [被 audioWorklet 搞崩浏览器] 发现 Chrome 90 80 容易崩( 100%崩?),老版本 Chrome 60 70 测的不会崩,FireFox 不会崩。Chrome 崩溃要点:suspended 状态下的 AudioContext ,在 audioWorklet.addModule+构造 AudioWorkletNode 未完成时,同时进行 resume 调用,在恢复到 running 状态那一刻,浏览器崩溃了 错误代码:STATUS_ACCESS_VIOLATION


    chrome 95.0.4638.54 。
    morty0
    morty0
    Mar 10, 2022
    41
    chrome 99.0.4844.51 没有崩溃
    1235467
    1235467
    Mar 10, 2022
    42
    99.0.4844.51 (正式版本) (64 位元) 崩溃
    cvooc
    cvooc
    Mar 10, 2022
    43
    版本 99.0.4844.51 (正式版本) ( 64 位)
    刷新后 7 秒内点击稳定崩,过了 7 秒点击没崩过
    wnh3yang
    wnh3yang
    Mar 10, 2022
    44
    firefox 98.0 (64 位)

    [13:01:08.150]完成,浏览器正常,没有崩溃
    [13:01:07.839]4 ctx.state=running
    [13:01:07.839]构造时没崩溃,等待浏览器崩溃 2...
    [13:01:07.837]开始构造 AudioWorkletNode ,等待浏览器崩溃 1...
    [13:01:07.837]3 ctx.state=running
    [13:01:07.823]2 ctx.state=running
    [13:00:56.896]请随便点击一下页面,激活 AudioContext ,感觉要崩
    [13:00:56.896]state 是 suspended ,感觉这次要崩
    [13:00:56.896]1 ctx.state=suspended
    [13:00:56.885]代码开始执行...
    [13:00:56.885]请打开控制台进行观摩,不然崩溃后看不到页面内容
    [13:00:56.884] [被 audioWorklet 搞崩浏览器] 发现 Chrome 90 80 容易崩( 100%崩?),老版本 Chrome 60 70 测的不会崩,FireFox 不会崩。Chrome 崩溃要点:suspended 状态下的 AudioContext ,在 audioWorklet.addModule+构造 AudioWorkletNode 未完成时,同时进行 resume 调用,在恢复到 running 状态那一刻,浏览器崩溃了 错误代码:STATUS_ACCESS_VIOLATION
    Felldeadbird
    Felldeadbird
    Mar 10, 2022
    45
    版本 99.0.4844.51 (正式版本) ( 64 位)
    复现成功。秒崩
    AlanDSF
    AlanDSF
    Mar 10, 2022
    46
    99.0.4844.51 (正式版本) ( 64 位)没崩
    yuhangch
    yuhangch
    Mar 10, 2022
    47
    Version 99.0.1150.36 (Official build) (x86_64)
    没崩
    1nclude
    1nclude
    Mar 10, 2022
    48
    版本 99.0.4844.51 (正式版本) ( 64 位)

    崩了
    sprite82
    sprite82
    Mar 10, 2022
    49
    Microsoft Edge
    版本 99.0.1150.36 (正式版本) (64 位)
    没崩
    0x00000000
    0x00000000
    Mar 10, 2022❤️1
    50

    安卓 Chrome 99.0.4844.58 复现
    princelai
    princelai
    Mar 10, 2022
    51
    @lance6716 #31 我和你完全一样,我的就会崩溃
    idou
    idou
    Mar 10, 2022
    52
    wind chrome 版本 99.0.4844.51 (正式版本) ( 64 位)崩了
    错误代码:STATUS_ACCESS_VIOLATION
    WilsonGGG
    WilsonGGG
    Mar 10, 2022
    53
    EDGE 99.0.1150.36

    [复现成功]
    Finnn
    Finnn
    Mar 10, 2022
    54
    Chrome EDGE winX64 都是最新版,
    基本是没问题的, 只 edge 第一次访问崩了

    但是新开一个干净的账号环境(游客, 来宾, 访客, 无痕) 100% 都是崩溃的
    iovo7
    iovo7
    Mar 10, 2022
    55
    Vivaldi 5.1.2567.57 (Stable channel) ( 64 位)

    复现。
    CrossEntropy
    CrossEntropy
    Mar 10, 2022
    56
    Google Chrome
    版本 99.0.4844.51 (正式版本) (x86_64)
    开发者模式下启用模拟手机不崩溃
    正常点击会崩溃
    zii4914
    zii4914
    Mar 10, 2022
    57
    Chrome 版本 99.0.4844.51 (正式版本) ( 64 位)
    崩溃
    Finnn
    Finnn
    Mar 10, 2022
    58
    @codehz 我曾有过提 bug 2 分钟内回复并关闭的经历
    只是把问题指到了 Bugzilla, 因为标准以 Chrome 的为准 hh~~
    devehx
    devehx
    Mar 10, 2022
    59
    复现不了。
    Ubuntu Chrome Version 99.0.4844.51 (Official Build) (64-bit)
    yyt6801
    yyt6801
    Mar 10, 2022
    60
    edge 96.0.1054.62 崩了
    noErr
    noErr
    Mar 10, 2022
    61
    此页面存在问题
    EricGoodMan
    EricGoodMan
    Mar 10, 2022
    62
    Version 99.0.4844.51 (Official Build) (arm64) 复现
    RickyC
    RickyC
    Mar 10, 2022
    63
    我感觉你很厉害
    RickyC
    RickyC
    Mar 10, 2022
    64
    版本 99.0.4844.51 (正式版本) (arm64)
    可以复现
    akakidz
    akakidz
    Mar 10, 2022
    65
    版本 99.0.4844.51 (正式版本) ( 64 位)
    刷新后崩溃
    en20
    en20
    Mar 10, 2022
    66
    https://bugs.chromium.org/ 他们回复还蛮快的
    ie88
    ie88
    Mar 10, 2022
    67
    所以,有人可以告诉我这有什么意义嘛?
    https://imgur.com/a/tvtsDic
    xiangyuecn
    xiangyuecn
    OP
    Mar 10, 2022
    69
    @ie88 #67 这是浏览器防贼呢,防止代码偷偷播放音频。只有等到有用户操作后,才允许自动播放
    ie88
    ie88
    Mar 10, 2022
    70
    @xiangyuecn 是呀,我的截图可以看到具体说明说明了:The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.
    所以是觉得直接导致页面崩溃是属于 bug 嘛?
    pi0piK
    pi0piK
    Mar 10, 2022
    71
    99.0.4844.51 没有崩溃
    Oktfolio
    Oktfolio
    Mar 10, 2022
    72
    Microsoft Edge
    Version 99.0.1150.36 (Official build) (arm64) macOS 正常

    Google Chrome
    Version 99.0.4844.51 (Official Build) (arm64) macOS 崩溃
    ie88
    ie88
    Mar 10, 2022
    73
    @pi0piK 我和你版本一样,我的一点就崩
    suzic
    suzic
    Mar 10, 2022 via iPhone
    74
    会崩,但不是百分百
    xcsoft
    xcsoft
    Mar 10, 2022
    75
    92.0.4515.131 复现
    haozheliu
    haozheliu
    Mar 10, 2022
    76
    windows 版本 99.0.4844.51 (正式版本) ( 64 位)
    秒崩
    MiketsuSmasher
    MiketsuSmasher
    Mar 10, 2022
    77
    Edge 99.0.1150.30 linux 版本,前几次没有成功,后面每一次都能成功复现
    MiketsuSmasher
    MiketsuSmasher
    Mar 10, 2022
    78
    @MiketsuSmasher 错误代码:SIGSEGV
    HiCoder
    HiCoder
    Mar 10, 2022
    79
    Brave 会崩溃。
    liflymark6
    liflymark6
    Mar 10, 2022
    80
    Windows 版本 99.0.4844.51 (正式版本) ( 64 位)
    崩溃
    ArcherLeo
    ArcherLeo
    Mar 10, 2022
    81
    我能说我一进这个页面就崩溃吗😂,然后刷新后没事了,用的 Cent Browser
    Huelse
    Huelse
    Mar 10, 2022
    82
    @ie88 #70 合着你生产环境有个异常没捕获,然后崩了就不算 bug?
    xtinput
    xtinput
    Mar 10, 2022
    83
    Microsoft Edge
    版本 98.0.1108.62 (官方内部版本) (arm64)
    崩了
    ie88
    ie88
    Mar 10, 2022
    84
    @Huelse 我是前端初学者,请赐教:浏览器不允许无用户操作的情况下 new AudioContext(),你在浏览器引擎 catch 了这个 exception 应该怎样提示用户,告诉用户这个页面有代码使用了 AudioContext ,又怎样提示开发者,没有用户操作不能使用 AudioContext ?除了页面崩溃我还没想出来什么合适的方法
    doumeki
    doumeki
    Mar 10, 2022
    85
    maxthon
    版本 6.1.3.1001 ( 64 位) 0126
    没有崩
    wanacry
    wanacry
    Mar 10, 2022 via iPhone
    86
    没崩啊
    wanacry
    wanacry
    Mar 10, 2022 via iPhone
    87
    移动版没崩
    0o0O0o0O0o
    0o0O0o0O0o
    Mar 10, 2022 via iPhone
    88
    很厉害,去提一个吧
    codming
    codming
    Mar 10, 2022
    89
    M1 Chrome 99.0.4844.51 (arm64) 没有崩

    [18:50:23.747]完成,浏览器正常,没有崩溃
    [18:50:23.447]构造时没崩溃,等待浏览器崩溃 2...
    [18:50:23.446]开始构造 AudioWorkletNode ,等待浏览器崩溃 1...
    [18:50:23.445]3 ctx.state=running
    [18:50:23.441]4 ctx.state=running
    [18:50:23.428]2 ctx.state=suspended
    [18:50:12.615]请随便点击一下页面,激活 AudioContext ,感觉要崩
    [18:50:12.615]state 是 suspended ,感觉这次要崩
    [18:50:12.615]1 ctx.state=suspended
    [18:50:12.543]代码开始执行...
    [18:50:12.543]请打开控制台进行观摩,不然崩溃后看不到页面内容
    [18:50:12.542] [被 audioWorklet 搞崩浏览器] 发现 Chrome 90 80 容易崩( 100%崩?),老版本 Chrome 60 70 测的不会崩,FireFox 不会崩。Chrome 崩溃要点:suspended 状态下的 AudioContext ,在 audioWorklet.addModule+构造 AudioWorkletNode 未完成时,同时进行 resume 调用,在恢复到 running 状态那一刻,浏览器崩溃了 错误代码:STATUS_ACCESS_VIOLATION
    labulaka521
    labulaka521
    Mar 10, 2022
    90
    崩了 版本 99.0.4844.51 (正式版本) (x86_64) Mac 12.3 Beta 版
    yaott2020
    yaott2020
    Mar 10, 2022 via Android
    91
    安卓稳定版 Chrome 也崩溃了
    mikewang
    mikewang
    Mar 10, 2022
    92
    Google Chrome Version 96.0.4664.110 (Official Build) (arm64)
    M1 芯片
    崩
    gadfly3173
    gadfly3173
    Mar 10, 2022 via Android
    93
    @ie88 既然是针对开发者,把错误提示打在 console 里就好了,其他的浏览器不允许的操作也是这样处理的
    ie88
    ie88
    Mar 10, 2022
    94
    @gadfly3173 那用户层面应该怎么防止利益持续被损害呢?或者说怎么让用户知道该网页存在这种恶意行为?我个人觉得让网页直接崩溃可以有效提醒用户,至少让用户知道网页代码有 bug ,这个时候反馈到开发者,由开发者来处理这个 bug 或者恶意篡改,不然页面不崩溃,用户利益持续受损,用户也没办法察觉这种恶意行为,只在 console 里 log 出来并不能告知用户,这个页面存在一定安全隐患,让他停止访问这种站点。
    ie88
    ie88
    Mar 10, 2022
    95
    而且 The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.
    用到的是 not allow 和 must be ,而不是 not recommend 和 should be ,已经很严格了不是吗?
    gadfly3173
    gadfly3173
    Mar 10, 2022 via Android
    96
    @ie88 对于用户来说没有任何的利益被损害啊?操作是被浏览器禁止了,网站什么也没做到。使用这样的操作来进行浏览器版本检查 /降级策略等等也是很常规的手段。既然规范写的是禁止网站作出这样的操作,那么浏览器应该自己做好异常处理,而不是靠开发者自觉 /直接崩溃。而且这样崩溃了,谁知道问题是出在这里啊?比如参考 ssl 证书过期之类的提示,浏览器会很明确的告诉你问题出在哪里,用户和开发者都能知道是怎么回事。
    encro
    encro
    Mar 10, 2022
    97
    fixfox:

    我用 Rust 我没崩。
    ie88
    ie88
    Mar 10, 2022
    98
    “而且这样崩溃了,谁知道问题是出在这里啊”:页面崩溃,这段提示"The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page." 已经在 console 有了,所以是能帮助开发者定位到问题的。现在应该是缺少给用户提示的信息,尤其是这种恶意行为,要警示用户,小心访问此类站点,类似 ssl 过期这种提示,让用户选择继续访问还是不访问
    ie88
    ie88
    Mar 10, 2022
    99
    @gadfly3173 刚回答忘了 @
    xQmQ
    xQmQ
    Mar 10, 2022
    100
    Microsoft Edge
    版本 99.0.1150.36 (正式版本) (64 位)

    多次崩溃,少数几次未崩溃
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1360 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 216ms · UTC 22:23 · PVG 06:23 · LAX 14:23 · JFK 17:23
    ♥ Do have faith in what you're doing.