Repository navigation
REA on Fedora-based Linux: setup notes, gotchas and my test queue #1435
Replies: 6 comments 1 reply
|
TL;DR: This is a dated changelog of Linux results from 9 and 10 October. Startup got about 20% faster after #1439. Every fix below is in 6.4.0 or earlier. The setup steps and the Linux differences are in the main post. Timing, 6.3.0 and afterStartup after #1439. PR #1439 loads Playwright (Apache-2.0) and Git code only when a command needs them. It shipped in 6.4.0. The numbers are
Later startup numbers are on REA startup benchmark. Node timing of one real app, on 6.3.0. I ran
Fixed since
Edit: 12 October. Rewritten as a changelog. The setup and Linux notes moved to the main post. Test setup
🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊 |
|
Great write-up — the Node 22/24/26 timing table and the license fold are especially useful for anyone reproducing on Fedora-family hosts. Short gotchas checklist (additive to what you already measured):
If you want a compact bilingual install card that mirrors this checklist for newcomers, happy to iterate on wording. Disclosure: I maintain rea.run, an independent bilingual docs/FAQ site about lawful coding-agent reverse engineering. Not affiliated with the REA project. |
|
TL;DR: This is a dated changelog of Linux results from 10 October. A big speedup came with #1444, and Node 26 again handled long analyses best. The Android lane, KWallet and Ghidra notes are in the main post. Speedups and fixes
Pings during a long JavaScript analysisA long
Newer main is faster, and the machine was less busy. On the Beyond All Reason launcher (code MIT; Flathub package GPL-2.0-or-later), the longest single wait was 4 to 5 s. A CPU profile shows that step builds the whole app graph in one go, after the last file is parsed. (#1462) The issue #1462 is closed, after #1545 and #1557 merged. Both are in 6.4.0. By their titles, both make the analysis yield during long steps. I have not re-measured these waits. Smaller results
Edit: 12 October. Rewritten as a changelog. The Android lane, pings, KWallet, Ghidra lanes and the glibc quirk moved to the main post. Test setup
🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊 |
|
TL;DR: Six PRs I tested have merged since yesterday. The five Node bug reports, #2020 to #2024, are already fixed on main. My #2212, #2150, #2068 and #2227 results are posted. I'm testing #2144 and the merged kuna memory fix now. Next are #2244, #2280, #2282 and #2283. If you want a Linux check on something, tag me in that issue or PR. Updated: 12 October, 18:48 UTC. I keep this one comment up to date. Finish times are rough estimates. Testing now
Next
Waiting on others
DoneRecent first. Each link goes to my result comment. Merged since my tests: #2212, #2026, #2014, #2011, #1359 and #1582. Thanks, everyone.
Roadmap items a Linux box can help with
Not for this machine: Windows, macOS, iOS and Hopper. All results so far (links only)
Test setup
🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊 |
|
سلام عليكم |
|
Moved: this benchmark now has its own page, REA startup benchmark. I update it there each release. Latest: on Node 24, main (13e03e9) lists its tools in 1.47 s, 16 percent less than 6.4.0 (1.75 s). 🤖 Generated with Claude Code (Opus 5.5) 🦊 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
TL;DR: I tested REA on a Fedora-based Linux box (Nobara 44). Ghidra, Chromium, pwntools, the Android lane and the installer all work. Every Linux fix named here shipped in 6.4.0 or earlier, and this page is the one place for the Linux notes.
My test queue is in a comment below. Dated results are in two changelog comments. Startup timing has its own page, REA startup benchmark.
Each note links to where I first posted it. Thanks, ylwl1997, for your checklist. Six of its seven points match what I saw, and they are folded in below.
Setup that worked
GPL-2.0-only WITH Classpath-exception-2.0).GHIDRA_INSTALL_DIRandJAVA_HOME. Thennpm run verify:ghidrapassed. (#1280, #1419)REA_BROWSER_EXECUTABLE=/usr/bin/chromium-browser. Thennpm run verify:browserpassed. (#1384)REA_PWNTOOLS_PYTHONat the venv's Python. Never install into the distro Python. (#1404).nvmrc.enginesfield allows 22.19 and up, 24.11 and up, and 26 and up.install.shrun worked on Node 22 and 24, and putreain~/.local/bin. (#1417)Where Linux differs
TMPDIRshort.verify:browser("Socket path too long"). (#1384)TMPDIR, all 69 tests in the 9 files that had failed passed. (#1390)/tmp/reaworks. (ylwl1997's checklist)about:blankwith an empty URL. That was the cause behind the frame URL bug in [Bug] inspect_web_page rejects every target on Chromium 150: Page.getFrameTree reports the opaque placeholder URL #1384, which is closed. (cause, found by BaaRai)--password-store=basicsince c57e759. Playwright already adds that flag by default, which avoids the stall too. (ylwl1997's checklist)verify:browserfailed. With the flag, it passed. (#1432)safeStoragecall does ask. On KDE 6, that call froze the main process until I killed it. The same flag avoids the freeze.verify:electronscript keeps them. (#1432)tsc --noEmitpeaks near 2.4 GiB, which is over a 2 GiB cap. With--singleThreaded,tscpassed at 1.49 GiB. This was one run, on Node 24, and I have not rerun it. (#1402)fileslist in package.json has nodocs/folder. So the README's Android guide link is dead after an install. The bundled skill'sreferences/android-applications.mdhas the same steps. I re-checked this on main today.unsupported_host. 6.1.0 and 6.2.0 did this on Nobara 44. I filed [Bug] Nobara 44 (Fedora-based) reported as unsupported_host #1335, which is closed, and 6.3.0 reports the host as healthy. (ylwl1997's checklist, point 7)Android lane
I pointed released 6.3.0 at Coffee 2.27 (Apache-2.0), a small F-Droid app. Its SHA-256 (a file fingerprint) matched F-Droid's signed index. It needed two settings:
Five Android commands all worked, at about 4 s and 550–650 MiB each.
The five Android commands
inspect-android-packagesearch-android-classesinspect-android-classinspect-android-methodtrace-android-referencesThe command
project-android-application-graphfailed on 6.3.0. The cause was two zip names that differ only in case, likeres/2f.xmlandres/2F.xml(#1470). Five more F-Droid apps hit it too. The fix, #1480, shipped in 6.4.0. (#1480)Ghidra lanes
Six
verify:ghidralanes run on Linux with Ghidra 12.1.4. The longest take about 6 minutes each. Four more need macOS, Windows or extra files. Three breaks I hit are fixed: #1382, #1527 and 162f9bf (#1419), and all three are in 6.4.0.A glibc quirk with gcc builds
One glibc quirk to know. With gcc
-O2, glibc's header makes someerror()calls look like they never return. (glibc is the standard C library on Linux.) Ghidra then marks theerrorstub as no-return. So code after a plain warningerror(0, …)gets cut off. Clang builds don't hit this. (#1419)Node timing
Startup timing for Node 22, 24 and 26 now lives on REA startup benchmark. I update it each release. My older 6.3.0 timings of one real app are in the first changelog comment. The short version: Node 26 was fastest on long analyses, and Node 22 was slowest.
From ylwl1997, not tested here
doctor --provider ghidracommand. I usedverify:ghidrainstead.which chromium. I used/usr/bin/chromium-browser.Not run
Thanks, morluto, for REA. Thanks also to BaaRai, N0zoM1z0, zeynelacikgoez and everyone whose PRs I got to test.
Edit: 12 October. Rewritten as the one Linux reference. Startup timing moved to #1998. Dated results moved to two changelog comments.
Handy for testing PRs on Linux
git archivegives a clean copy of any commit. Your clone stays on main. Checks that callgit ls-filesneed a workaround. (#1404)HOMEwithenv -ikeeps setup tests off your real config. (#1415, #1417)ulimit -c 0plustimeoutaround crash-prone runs. No core files, and no runs that hang. (#1387)taskset -c 2,3pins a timing run to two cores. (#1065)Commands
npm_command=execis whatnpxsets. Setup output changes without it.pyelftools is in the public domain. Unicorn is GPL-2.0.
Software we used, with links and licenses
Every tool behind these notes and the linked comments. Licenses are from each project's license file or Fedora's package data.
Runtimes and build tools
JavaScript, C++JavaScriptJava, C++GPL-2.0-only WITH Classpath-exception-2.0C++Apache-2.0 WITH LLVM-exceptionC++, CCGoRustAnalysis back ends
Java, C++C++154.0.8037.57TypeScript1.58.2PythonPythonCC, ValaKotlin, JavaC++, TypeScriptChecks and test tools
HaskellTypeScriptGoRustTypeScriptC, PythonApps we pointed REA at
Python, TypeScriptTypeScriptTypeScriptTypeScriptJavaScriptGPL-2.0-or-laterKotlinPython, RustGPL-3.0-or-laterGoogle's test build was also used as a second browser.
Some tests also used closed-source apps. We describe those but don't name them. We kept to REA's disclaimer: lawful use, with permission where it is needed.
The licenses in plain words
Test setup
154.0.8037.57GPL-2.0-only WITH Classpath-exception-2.0)🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊
All reactions