Description
Since the recent Google Chrome release 147 for Android, accessing camera texture under immersive AR session crashes the page ("Aw, snap" error). Just tested on several different devices from different vendors (Samsung, Motorola). Same crash happens in Chrome Beta 148.
Camera access still works normally after downgrading to previous Chrome versions (146 and below).
The crash occurs at renderer.xr.getCameraTexture( view.camera ); (same result if calling glBinding.getCameraImage directly).
Check the official three.js example for this behavior: https://threejs.org/examples/webxr_ar_camera_access.html
Why do I think this might an issue with THREE.js?
There is another vanilla WebXR camera access example that does not crash on Chrome 147+: https://storage.googleapis.com/chromium-webxr-test/r1516914/proposals/camera-access-barebones.html .
Essentially it does the same thing as the WebXRManager when configuring session, creaing glBinding and layers, but probably in a different order that does not lead to a crash.
Reproduction steps
- Make sure the recent release of Google Chrome for Android is installed (e.g., 147.0.7727.101, or 148 beta)
- Open the example page https://threejs.org/examples/webxr_ar_camera_access.html (e.g., from three.js v184 release or earlier)
- Start AR and observe the crash page ("Aw, snap").
Code
// see https://threejs.org/examples/webxr_ar_camera_access.html
Live example
Screenshots
https://threejs.org/examples/webxr_ar_camera_access.html :

https://storage.googleapis.com/chromium-webxr-test/r1516914/proposals/camera-access-barebones.html :

Version
r184
Device
Mobile
Browser
Chrome
OS
Android
Description
Since the recent Google Chrome release 147 for Android, accessing camera texture under immersive AR session crashes the page ("Aw, snap" error). Just tested on several different devices from different vendors (Samsung, Motorola). Same crash happens in Chrome Beta 148.
Camera access still works normally after downgrading to previous Chrome versions (146 and below).
The crash occurs at renderer.xr.getCameraTexture( view.camera ); (same result if calling glBinding.getCameraImage directly).
Check the official three.js example for this behavior: https://threejs.org/examples/webxr_ar_camera_access.html
Why do I think this might an issue with THREE.js?
There is another vanilla WebXR camera access example that does not crash on Chrome 147+: https://storage.googleapis.com/chromium-webxr-test/r1516914/proposals/camera-access-barebones.html .
Essentially it does the same thing as the WebXRManager when configuring session, creaing glBinding and layers, but probably in a different order that does not lead to a crash.
Reproduction steps
Code
// see https://threejs.org/examples/webxr_ar_camera_access.htmlLive example
joffical three.js example: https://threejs.org/examples/webxr_ar_camera_access.html
vanilla WebXR example: https://storage.googleapis.com/chromium-webxr-test/r1516914/proposals/camera-access-barebones.html
Screenshots
https://threejs.org/examples/webxr_ar_camera_access.html :

https://storage.googleapis.com/chromium-webxr-test/r1516914/proposals/camera-access-barebones.html :

Version
r184
Device
Mobile
Browser
Chrome
OS
Android