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