I’m unable to provide a minimal reproducible example, due to an NDA, so I want to assist in the diagnosis as much as is feasible:
opened 10:34PM - 19 May 26 UTC
CLI
### Minimal reproducible example
[`Patroniks-App/patroniks/tree/d038fbc5e37dd28… 054509928577659523b1a5906`](https://github.com/Patroniks-App/patroniks/tree/d038fbc5e37dd28054509928577659523b1a5906)
### Steps to reproduce
As [`id: 42837531`'s `8a7b35351e996d937bffe5c3e72fb5f8`, at `gist.github.com`](https://gist.github.com/RokeJulianLockhart/8a7b35351e996d937bffe5c3e72fb5f8#file-journalctl-b-b8b7e2ab76e84f6bbdfb887c27eb234e-date-s-n-log), demonstrates:
1. ~~~sh
#!/usr/bin/env sh
run0 dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release && \
run0 dnf5 install android-studio-canary && \
run0 dnf5 install gh && \
gh auth && \
gh repo clone Patroniks-App/patroniks && \
cd patroniks && \
android-studio-canary
~~~
1. ~~~sh
#!/usr/bin/env bash
run0 dnf5 install adoptium-temurin-java-repository && \
run0 dnf5 install temurin-17-jdk && \
export JAVA_HOME=/usr/lib/jvm/java-17-temurin-jdk && \
export ANDROID_HOME=$HOME/Android/Sdk && \
npm install && \
npm run android
~~~
…was sufficient to OOM my OS (even with GiB of JDEC-DDR5 SDRAM), to the extent that I was `qdbus-qt6 org.kde.Shutdown /Shutdown org.kde.Shutdown.logout`'d. [`discussion.fedoraproject.org/t/191835`](https://discussion.fedoraproject.org/t/how-can-i-ascertain-why-expo-caused-my-os-to-oom/191835) elaborates, for it cites supporting evidence.
#### My Environment
- #### The Invoking IDE
1. <p></p><details><p></p>
~~~sh
#!/usr/bin/env sh
rpm -qf "$(command -v android-studio-canary)" \
--queryformat "$(
cat <<'EOF'
Name: %{NAME}
Version: %{VERSION}
Release: %{RELEASE}
Architecture: %{ARCH}
Install Date: %{INSTALLTIME:date}
Size: %{SIZE}
Signature: %{SIGPGP:pgpsig}
Source RPM: %{SOURCERPM}
Build Date: %{BUILDTIME:date}
Build Host: %{BUILDHOST}
Packager: %{PACKAGER}
Vendor: %{VENDOR}
EOF
)"$'\n' | yq -P
~~~
<p></p></details><p></p>
1. <blockquote>
~~~YAML
Name: android-studio-canary
Version: 2026.1.1.5
Release: 1.fc44
Architecture: x86_64
Install Date: Tue 19 May 2026 17:57:08 BST
Size: 3646227885
Signature: EdDSA/SHA256, Thu 14 May 2026 17:02:08 BST, Key ID 00cdab43de226d6f
Source RPM: android-studio-canary-2026.1.1.5-1.fc44.src.rpm
Build Date: Thu 14 May 2026 16:37:22 BST
Build Host: 4fd582b98f1d
Packager: veuxit <erroor234@gmail.com>
Vendor: Terra
~~~
</blockquote>
- #### The Shell
1. <p></p><details><p></p>
~~~sh
#!/usr/bin/env sh
rpm -qf "$(echo $SHELL)" \
--queryformat "$(
cat <<'EOF'
Name: %{NAME}
Version: %{VERSION}
Release: %{RELEASE}
Architecture: %{ARCH}
Install Date: %{INSTALLTIME:date}
Size: %{SIZE}
Signature: %{SIGPGP:pgpsig}
Source RPM: %{SOURCERPM}
Build Date: %{BUILDTIME:date}
Build Host: %{BUILDHOST}
Packager: %{PACKAGER}
Vendor: %{VENDOR}
EOF
)"$'\n' | yq -P
~~~
<p></p></details><p></p>
1. <blockquote>
~~~YAML
Name: bash
Version: 5.3.9
Release: 3.fc44
Architecture: x86_64
Install Date: Wed 22 Apr 2026 14:58:59 BST
Size: 8873537
Signature: (none)
Source RPM: bash-5.3.9-3.fc44.src.rpm
Build Date: Fri 16 Jan 2026 09:11:11 GMT
Build Host: buildvm-x86-11.rdu3.fedoraproject.org
Packager: Fedora Project
Vendor: Fedora Project
~~~
</blockquote>
- #### The OS
1. <p></p><details><p></p>
~~~sh
#!/usr/bin/env sh
cat /etc/os-release | jc --ini | jq 'with_entries(.value |= (if type=="string" and test("^[0-9]+$") then tonumber else . end))| {VARIANT, NAME, VERSION_ID}' | yq -P
~~~
<p></p></details><p></p>
1. <blockquote>
~~~YAML
VARIANT: KDE Plasma Desktop Edition
NAME: Fedora Linux
VERSION_ID: 44
~~~
</blockquote>
### Environment
<blockquote>
```console
beedell.roke_julian_lockhart@beedell:~/Documents/SoftwareThatLacksPathSanitisation/patroniks$ npx expo-env-info
Need to install the following packages:
expo-env-info@2.0.12
Ok to proceed? (y) y
expo-env-info 2.0.12 environment info:
System:
OS: Linux 7.0 Fedora Linux 44 (KDE Plasma Desktop Edition)
Shell: 5.3.9 - /bin/bash
Binaries:
Node: 24.13.1 - /usr/bin/node
npm: 11.8.0 - /usr/bin/npm
npmPackages:
babel-preset-expo: ^54.0.8 => 54.0.10
expo: ^54.0.25 => 54.0.34
react: 19.1.0 => 19.1.0
react-native: 0.81.5 => 0.81.5
Expo Workflow: bare
```
</blockquote>
### Expo Doctor Diagnostics
<blockquote>
```console
beedell.roke_julian_lockhart@beedell:~/Documents/SoftwareThatLacksPathSanitisation/patroniks$ npx expo-doctor@latest
Need to install the following packages:
expo-doctor@1.18.22
Ok to proceed? (y) y
17/17 checks passed. No issues detected!
```
</blockquote>
It would also help to ensure that I’ve correctly reported it to them, rather than Google (for Android Studio), or Temurin. I’ve traces, but don’t understand them:
If its a memory leak then watch the system as it runs to see which process is leaking.
Also the logs from oom usually point to a process that is using excessive memory.
memstrack should show you what process (pid) is top of the pile for using (pages) and hanging onto memory (peak). For example:
Pages being tracked: 291892 (1140MB)
┌ PID | Pages | Peak | Process Command Line
│ 15400 | 45256 | 82531 | /usr/bin/bwrap --args 72 -- launch-script.sh │
│ 15696 | 44492 | 59774 | /app/zen/zen -contentproc -ipcHandle 0 -signalPipe 1 -initialChannelId {30821fa3-2eba-4ebe-9964-facedff94468} -parentPid 2 -greomni /app/zen/omni.ja -appomni /app/zen/browser/omni.ja -appDir /app/zen/browser 1 forkserver │
│ 15615 | 42322 | 73458 | /app/zen/zen -contentproc -ipcHandle 0 -signalPipe 1 -initialChannelId {30821fa3-2eba-4ebe-9964-facedff94468} -parentPid 2 -greomni /app/zen/omni.ja -appomni /app/zen/browser/omni.ja -appDir /app/zen/browser 1 forkserver │
│ 15694 | 33727 | 44003 | /app/zen/zen -contentproc -ipcHandle 0 -signalPipe 1 -initialChannelId {30821fa3-2eba-4ebe-9964-facedff94468} -parentPid 2 -greomni /app/zen/omni.ja -appomni /app/zen/browser/omni.ja -appDir /app/zen/browser 1 forkserver │
│ 15448 | 16774 | 17261 | /app/zen/zen --name app.zen_browser.zen │
Won’t tell you WHY it’s leaking, only that something is .
@barryascott , the problem is that it hasn’t yet been reproducible. Can it be retroactively diagnosed, and/or can I change anything to render it easier to retroactively diagnose in the future?
You can run a script to collect memory stats every few minutes and log to a file.
Then when the system breaks look at the end of the log to see the what happened leading up to the oom.