mapbox-gl-js version
3.21.0
Browser and version
Various browsers across various Pixel devices, no iOS reports
Expected behavior
The page shouldn't crash 😄
Actual behavior
The page crashes ☹️
Link to the demonstration
https://super-neato.s3.us-east-1.amazonaws.com/mapbox3.21.0.html
Steps to trigger the unexpected behavior
The reports from my users suggest that the page crashes after attempting to zoom/pan. It doesn't sound like it takes much to produce the crash. The reports mention several browsers, but they're mostly Pixel devices:
- Pixel 8 / Android 16 / Opera, Chrome, and Firefox
- Pixel 7 / Android 16 / Firefox and Chrome
- Pixel 8
- Pixel 8A
- Pixel 9a
- Samsung/Android
I got one report of a Pixel 10 Pro not having issues.
There weren't any reports from iOS users.
On my 2023 MacBook Pro (Apple M2 Max, 32GB RAM) there's a fair amount of stuttering on the initial zoom out to the globe view, but after the first zoom out things go smoothly. At about the point where the stuttering occurs, I noticed the browser log output I've shared below - I don't know how relevant it is to the crashing issue.
I deployed a version of my website that downgrades to Mapbox GL JS v3.20.0 and everyone reported that this resolved their issue.
Relevant log output
Ze @ util.ts:513
ao @ cutoff.ts:53
(anonymous) @ draw_terrain_raster.ts:304
renderToBackBuffer @ terrain.ts:862
renderBatch @ terrain.ts:985
render @ painter.ts:1306
_render @ map.ts:4570
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_render @ map.ts:4679
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
requestAnimationFrame
frame @ browser.ts:39
_triggerFrame @ map.ts:4997
triggerRepaint @ map.ts:4991
_requestFrame @ handler_manager.ts:674
_triggerRenderFrame @ handler_manager.ts:684
handleEvent @ handler_manager.ts:383
(anonymous) @ handler_manager.ts:677
run @ task_queue.ts:51
_render @ map.ts:4510
(anonymous) @ map.ts:5003
mapbox-gl-js version
3.21.0
Browser and version
Various browsers across various Pixel devices, no iOS reports
Expected behavior
The page shouldn't crash 😄
Actual behavior
The page crashes☹️
Link to the demonstration
https://super-neato.s3.us-east-1.amazonaws.com/mapbox3.21.0.html
Steps to trigger the unexpected behavior
The reports from my users suggest that the page crashes after attempting to zoom/pan. It doesn't sound like it takes much to produce the crash. The reports mention several browsers, but they're mostly Pixel devices:
I got one report of a Pixel 10 Pro not having issues.
There weren't any reports from iOS users.
On my 2023 MacBook Pro (Apple M2 Max, 32GB RAM) there's a fair amount of stuttering on the initial zoom out to the globe view, but after the first zoom out things go smoothly. At about the point where the stuttering occurs, I noticed the browser log output I've shared below - I don't know how relevant it is to the crashing issue.
I deployed a version of my website that downgrades to Mapbox GL JS v3.20.0 and everyone reported that this resolved their issue.
Relevant log output