搞崩 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 发帖
测试页面截图:

崩溃截图:

|  |      1learningman      2022-03-10 10:29:35 +08:00 Edge latest 复现成功 | 
|      228Sv0ngQfIE7Yloe      2022-03-10 10:34:38 +08:00 | 
|      3densuc      2022-03-10 10:37:51 +08:00 Edge 92.0.902.55 未复现 | 
|  |      4zycojamie      2022-03-10 10:42:49 +08:00 复现成功 chrome 版本 99.0.4844.51 (正式版本) (x86_64) | 
|  |      5ZField      2022-03-10 10:43:56 +08:00 Edge 99.0.1150.36 未复现 | 
|  |      6superszy      2022-03-10 10:51:53 +08:00 Chrome 99.0.4844.51 (正式版本) (64 位) Edge 99.0.1150.36 (正式版本) (64 位) 可以复现 | 
|  |      7mengyx      2022-03-10 10:53:37 +08:00 MS Edge 99.0.1150.36 刷新两次后成功复现 | 
|  |      8zu1k      2022-03-10 10:54:01 +08:00 via Android 报告给 chrome 团队吧,说不定可以被利用,几万块直接到手不香嘛 | 
|  |      9dzdh      2022-03-10 10:55:05 +08:00 chrome 99.0.4844.51 复现 | 
|  |      10fanxasy      2022-03-10 10:55:06 +08:00 Microsoft Edge 版本 99.0.1150.36 (正式版本) (64 位) [10:54:25.877]完成,浏览器正常,没有崩溃 | 
|  |      11Yingyi      2022-03-10 10:55:39 +08:00 版本 99.0.4844.51 (正式版本) (arm64) 第一次没成功,第二次复现成功 | 
|      12inhons      2022-03-10 10:57:33 +08:00 Chrome 101.0.4934.2 (正式版本) canary ( 64 位)      没蹦 Vivaldi 5.1.2567.57 (Stable channel) 内核:98.0.4758.121 ( 64 位) 没蹦 | 
|  |      13zhentoujun      2022-03-10 10:59:32 +08:00 Microsoft Edge 版本 99.0.1150.36 (正式版本) (64 位)——可以复现 Firefox Nightly 100.0a1 (2022-03-09) (64 位)——未能复现 | 
|  |      14superchijinpeng      2022-03-10 11:00:40 +08:00 Edge 99.0.1150.36 Chrome 99.0.4844.51 稳定复现 | 
|  |      15shakoon      2022-03-10 11:01:05 +08:00 Cent Browser 版本 4.3.9.248 (正式版本) ( 32 位) (Chromium 86.0.4240.198) 表示崩了 | 
|  |      17ab      2022-03-10 11:02:07 +08:00 via iPhone 我要拿来反调试😂 | 
|  |      18kingme      2022-03-10 11:03:12 +08:00 Microsoft Edge 版本 99.0.1150.33 (官方内部版本) Beta(x86_64) macOS 11.6 复现 | 
|  |      19leavic      2022-03-10 11:05:40 +08:00 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]请打开控制台进行观摩,不然崩溃后看不到页面内容 | 
|      20tvirus      2022-03-10 11:05:41 +08:00 nothing happened Version 98.0.4758.80 (Official Build) (64-bit) | 
|  |      21Valid      2022-03-10 11:07:37 +08:00 一个 while 也能蹦 | 
|  |      22youthfire      2022-03-10 11:10:11 +08:00 Safari 玩了下,没有崩 | 
|  |      23xiangyuecn OP @zu1k #8 有提交地址没,发一个😁 不知道从哪里提交有机会得奖金😂 | 
|      24lx0758      2022-03-10 11:14:00 +08:00 Microsoft Edge 版本 99.0.1150.36 (正式版本) (64 位) | 
|  |      25codehz      2022-03-10 11:16:33 +08:00 via Android  1 Chromium 修崩溃速度很玄学,之前报了一个 https://bugs.chromium.org/p/chromium/issues/detail?id=1207317 一直都不给修(不过可能和 windows 平台专属有关系) | 
|      26ochatokori      2022-03-10 11:18:08 +08:00 版本 99.0.4844.51 (正式版本) ( 64 位)( linux )没崩,刷新几次也没崩 | 
|  |      27villivateur      2022-03-10 11:19:00 +08:00 Edge 崩了,Firefox 没崩 | 
|      28ochatokori      2022-03-10 11:21:15 +08:00 附上日志 [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 | 
|      29Finnn      2022-03-10 11:22:39 +08:00 | 
|  |      30ykk      2022-03-10 11:24:49 +08:00 firefox 正常 | 
|  |      31lance6716      2022-03-10 11:37:18 +08:00 manjaro KDE Chrome Version 99.0.4844.51 (Official Build) (64-bit) 一直不会崩 | 
|  |      32mopig      2022-03-10 11:44:44 +08:00  1 控制台打开就不会崩,控制台关闭才崩。 | 
|  |      33Hug125      2022-03-10 11:45:43 +08:00 vivaldi   复现了  版本 5.0.2497.48 (Stable channel) (arm64) 操作系统 macOS 版本 12.0.1 (版号 21A559 )  | 
|      34CheckTime      2022-03-10 11:46:23 +08:00 99.0.4844.51 (正式版本)  刷新后立马点击会崩,但是刷新后稍微等几秒再点就不会崩。 | 
|  |      35c978R77Le1z2f8u9      2022-03-10 11:47:51 +08:00 Version 99.0.4844.51 (Official Build) (x86_64) 不会崩 | 
|  |      36492      2022-03-10 11:51:20 +08:00 版本 99.0.4844.51 (正式版本) ( 64 位) 成功 | 
|  |      37whitehack      2022-03-10 11:51:42 +08:00 mac 版本 98.0.1108.51 (官方内部版本) (x86_64)  崩了 | 
|  |      39zu1k      2022-03-10 11:54:14 +08:00 via Android  1 @xiangyuecn 24 楼有样例 | 
|  |      40nyakoy      2022-03-10 11:55:30 +08:00 [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 。 | 
|  |      41morty0      2022-03-10 12:23:25 +08:00 chrome 99.0.4844.51 没有崩溃 | 
|      421235467      2022-03-10 12:46:08 +08:00 99.0.4844.51 (正式版本) (64 位元) 崩溃 | 
|  |      43cvooc      2022-03-10 12:56:47 +08:00 版本 99.0.4844.51 (正式版本) ( 64 位) 刷新后 7 秒内点击稳定崩,过了 7 秒点击没崩过 | 
|      44wnh3yang      2022-03-10 13:02:32 +08:00 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 | 
|  |      45Felldeadbird      2022-03-10 13:19:40 +08:00 版本 99.0.4844.51 (正式版本) ( 64 位) 复现成功。秒崩 | 
|  |      46AlanDSF      2022-03-10 13:24:22 +08:00 99.0.4844.51 (正式版本) ( 64 位)没崩 | 
|  |      47yuhangch      2022-03-10 13:24:39 +08:00 Version 99.0.1150.36 (Official build) (x86_64) 没崩 | 
|      481nclude      2022-03-10 13:39:12 +08:00 版本 99.0.4844.51 (正式版本) ( 64 位) 崩了 | 
|  |      49sprite82      2022-03-10 13:42:32 +08:00 Microsoft Edge 版本 99.0.1150.36 (正式版本) (64 位) 没崩 | 
|  |      500x00000000      2022-03-10 13:43:34 +08:00  1 | 
|  |      52idou      2022-03-10 14:08:58 +08:00 wind  chrome 版本 99.0.4844.51 (正式版本) ( 64 位)崩了 错误代码:STATUS_ACCESS_VIOLATION | 
|  |      53WilsonGGG      2022-03-10 14:26:06 +08:00 EDGE 99.0.1150.36  [复现成功] | 
|      54Finnn      2022-03-10 14:36:18 +08:00 Chrome EDGE winX64 都是最新版, 基本是没问题的, 只 edge 第一次访问崩了 但是新开一个干净的账号环境(游客, 来宾, 访客, 无痕) 100% 都是崩溃的 | 
|      55iovo7      2022-03-10 14:39:38 +08:00 Vivaldi 5.1.2567.57 (Stable channel) ( 64 位)  复现。 | 
|  |      56CrossEntropy      2022-03-10 14:41:09 +08:00 Google Chrome 版本 99.0.4844.51 (正式版本) (x86_64) 开发者模式下启用模拟手机不崩溃 正常点击会崩溃 | 
|  |      57zii4914      2022-03-10 14:44:25 +08:00 Chrome 版本 99.0.4844.51 (正式版本) ( 64 位) 崩溃 | 
|      58Finnn      2022-03-10 14:45:52 +08:00 @codehz 我曾有过提 bug 2 分钟内回复并关闭的经历 只是把问题指到了 Bugzilla, 因为标准以 Chrome 的为准 hh~~ | 
|  |      59devehx      2022-03-10 14:52:59 +08:00 复现不了。 Ubuntu Chrome Version 99.0.4844.51 (Official Build) (64-bit) | 
|  |      60yyt6801      2022-03-10 16:14:51 +08:00 edge 96.0.1054.62   崩了 | 
|  |      61noErr      2022-03-10 16:20:18 +08:00 此页面存在问题 | 
|  |      62EricGoodMan      2022-03-10 16:25:02 +08:00 Version 99.0.4844.51 (Official Build) (arm64) 复现 | 
|  |      63RickyC      2022-03-10 16:26:04 +08:00 我感觉你很厉害 | 
|  |      64RickyC      2022-03-10 16:27:49 +08:00 版本 99.0.4844.51 (正式版本) (arm64) 可以复现 | 
|  |      65akakidz      2022-03-10 16:39:16 +08:00 版本 99.0.4844.51 (正式版本) ( 64 位) 刷新后崩溃 | 
|  |      66en20      2022-03-10 16:46:54 +08:00 https://bugs.chromium.org/ 他们回复还蛮快的 | 
|      67ie88      2022-03-10 17:06:13 +08:00 所以,有人可以告诉我这有什么意义嘛? https://imgur.com/a/tvtsDic | 
|      68ie88      2022-03-10 17:08:12 +08:00 | 
|  |      69xiangyuecn OP @ie88 #67 这是浏览器防贼呢,防止代码偷偷播放音频。只有等到有用户操作后,才允许自动播放 | 
|      70ie88      2022-03-10 17:25:11 +08:00 @xiangyuecn 是呀,我的截图可以看到具体说明说明了:The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. 所以是觉得直接导致页面崩溃是属于 bug 嘛? | 
|  |      71pi0piK      2022-03-10 17:32:20 +08:00 99.0.4844.51 没有崩溃 | 
|  |      72Oktfolio      2022-03-10 17:35:00 +08:00 Microsoft Edge Version 99.0.1150.36 (Official build) (arm64) macOS 正常 Google Chrome Version 99.0.4844.51 (Official Build) (arm64) macOS 崩溃 | 
|      74suzic      2022-03-10 17:37:38 +08:00 via iPhone 会崩,但不是百分百 | 
|  |      75xcsoft      2022-03-10 17:40:14 +08:00 92.0.4515.131 复现 | 
|  |      76haozheliu      2022-03-10 17:43:37 +08:00 windows 版本 99.0.4844.51 (正式版本) ( 64 位) 秒崩 | 
|  |      77MiketsuSmasher      2022-03-10 17:55:13 +08:00 Edge 99.0.1150.30 linux 版本,前几次没有成功,后面每一次都能成功复现 | 
|  |      78MiketsuSmasher      2022-03-10 17:56:50 +08:00 @MiketsuSmasher 错误代码:SIGSEGV | 
|      79HiCoder      2022-03-10 18:00:38 +08:00 Brave 会崩溃。 | 
|      80liflymark6      2022-03-10 18:08:27 +08:00 Windows 版本 99.0.4844.51 (正式版本) ( 64 位) 崩溃 | 
|  |      81ArcherLeo      2022-03-10 18:11:22 +08:00 我能说我一进这个页面就崩溃吗😂,然后刷新后没事了,用的 Cent Browser | 
|  |      83xtinput      2022-03-10 18:25:52 +08:00 Microsoft Edge 版本 98.0.1108.62 (官方内部版本) (arm64) 崩了 | 
|      84ie88      2022-03-10 18:26:42 +08:00 @Huelse 我是前端初学者,请赐教:浏览器不允许无用户操作的情况下 new AudioContext(),你在浏览器引擎 catch 了这个 exception 应该怎样提示用户,告诉用户这个页面有代码使用了 AudioContext ,又怎样提示开发者,没有用户操作不能使用 AudioContext ?除了页面崩溃我还没想出来什么合适的方法 | 
|  |      85doumeki      2022-03-10 18:36:30 +08:00 maxthon  版本 6.1.3.1001 ( 64 位) 0126 没有崩 | 
|      86wanacry      2022-03-10 18:42:26 +08:00 via iPhone 没崩啊 | 
|      87wanacry      2022-03-10 18:42:46 +08:00 via iPhone 移动版没崩 | 
|      880o0O0o0O0o      2022-03-10 18:46:20 +08:00 via iPhone 很厉害,去提一个吧 | 
|  |      89poxiaobbs      2022-03-10 18:51:31 +08:00 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 | 
|  |      90labulaka521      2022-03-10 18:57:43 +08:00 崩了 版本 99.0.4844.51 (正式版本) (x86_64) Mac 12.3 Beta 版 | 
|  |      91yaott2020      2022-03-10 19:10:57 +08:00 via Android 安卓稳定版 Chrome 也崩溃了 | 
|  |      92mikewang      2022-03-10 19:12:00 +08:00 Google Chrome Version 96.0.4664.110 (Official Build) (arm64) M1 芯片 崩 | 
|  |      93gadfly3173      2022-03-10 19:21:32 +08:00 via Android @ie88 既然是针对开发者,把错误提示打在 console 里就好了,其他的浏览器不允许的操作也是这样处理的 | 
|      94ie88      2022-03-10 19:30:31 +08:00 @gadfly3173 那用户层面应该怎么防止利益持续被损害呢?或者说怎么让用户知道该网页存在这种恶意行为?我个人觉得让网页直接崩溃可以有效提醒用户,至少让用户知道网页代码有 bug ,这个时候反馈到开发者,由开发者来处理这个 bug 或者恶意篡改,不然页面不崩溃,用户利益持续受损,用户也没办法察觉这种恶意行为,只在 console 里 log 出来并不能告知用户,这个页面存在一定安全隐患,让他停止访问这种站点。 | 
|      95ie88      2022-03-10 19:32:41 +08:00 而且 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 ,已经很严格了不是吗? | 
|  |      96gadfly3173      2022-03-10 19:38:00 +08:00 via Android @ie88 对于用户来说没有任何的利益被损害啊?操作是被浏览器禁止了,网站什么也没做到。使用这样的操作来进行浏览器版本检查 /降级策略等等也是很常规的手段。既然规范写的是禁止网站作出这样的操作,那么浏览器应该自己做好异常处理,而不是靠开发者自觉 /直接崩溃。而且这样崩溃了,谁知道问题是出在这里啊?比如参考 ssl 证书过期之类的提示,浏览器会很明确的告诉你问题出在哪里,用户和开发者都能知道是怎么回事。 | 
|  |      97encro      2022-03-10 19:44:09 +08:00 fixfox: 我用 Rust 我没崩。 | 
|      98ie88      2022-03-10 19:47:00 +08:00 “而且这样崩溃了,谁知道问题是出在这里啊”:页面崩溃,这段提示"The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page." 已经在 console 有了,所以是能帮助开发者定位到问题的。现在应该是缺少给用户提示的信息,尤其是这种恶意行为,要警示用户,小心访问此类站点,类似 ssl 过期这种提示,让用户选择继续访问还是不访问 | 
|      99ie88      2022-03-10 19:47:25 +08:00 @gadfly3173 刚回答忘了 @ | 
|  |      100xQmQ      2022-03-10 19:48:05 +08:00 Microsoft Edge 版本 99.0.1150.36 (正式版本) (64 位) 多次崩溃,少数几次未崩溃 |