From 509ed81294269f55194f3e54679bac54d03eaecf Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 2 Oct 2019 09:06:13 -0600 Subject: [PATCH] Document troubleshooting for memory leaks and getting profiles People find this useful. --- docs/memory-profiles-and-leaks.md | 53 +++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 docs/memory-profiles-and-leaks.md diff --git a/docs/memory-profiles-and-leaks.md b/docs/memory-profiles-and-leaks.md new file mode 100644 index 0000000000..3f8492d4d1 --- /dev/null +++ b/docs/memory-profiles-and-leaks.md @@ -0,0 +1,53 @@ +## Memory leaks + +Riot usually emits slow behaviour just before it is about to crash. Getting a +memory snapshot (below) just before that happens is ideal in figuring out what +is going wrong. + +Common symptoms are clicking on a room and it feels like the tab froze and scrolling +becoming jumpy/staggered. + +If you receive a white screen (electron) or the chrome crash page, it is likely +run out of memory and it is too late for a memory profile. Please do report when +this happens though so we can try and narrow down what might have gone wrong. + +## Memory profiles/snapshots + +When investigating memory leaks/problems it's usually important to compare snapshots +from different points in the Riot session lifecycle. Most importantly, a snapshot +to establish the baseline or "normal" memory usage is useful. Taking a snapshot +roughly 30-60 minutes after starting Riot is a good time to establish "normal" +memory usage for the app - anything after that is at risk of hiding the memory leak +and anything newer is still in the warmup stages of the app. + +**Memory profiles can contain sensitive information.** If you are submitting a memory +profile to us for debugging purposes, please pick the appropriate Riot developer and +send them over an encrypted private message. *Do not share your memory profile in +public channels or with people you do not trust.* + +### Taking a memory profile (Firefox) + +1. Press CTRL+SHIFT+I (I as in eye). +2. Click the Memory tab. +3. Press the camera icon in the top left of the pane. +4. Wait a bit (coffee is a good option). +5. When the save button appears on the left side of the panel, click it to save the + profile locally. +6. Compress the file (gzip or regular zip) to make the file smaller. +7. Send the compressed file to whoever asked for it (if you trust them). + +While the profile is in progress, the tab might be frozen or unresponsive. + +### Taking a memory profile (Chrome/Desktop) + +1. Press CTRL+SHIFT+I (I as in eye). +2. Click the Memory tab. +3. Select "Heap Snapshot" and the riot.im VM instance (not the indexeddb one). +4. Click "Take Snapshot". +5. Wait a bit (coffee is a good option). +6. When the save button appears on the left side of the panel, click it to save the + profile locally. +7. Compress the file (gzip or regular zip) to make the file smaller. +8. Send the compressed file to whoever asked for it (if you trust them). + +While the profile is in progress, the tab might be frozen or unresponsive.