Skip to content

v3.0.2 — Sync stall hotfix

Latest

Choose a tag to compare

@ogaworld369 ogaworld369 released this 14 Nov 13:31

A hotfix release. The bundled node binary is rebuilt (the first binary change since versionCode 10) to fix a stall that could stop a node permanently on some devices. The app code does not change.

What is fixed

  • Nodes could stall permanently on some devices. Reported on a Xiaomi device: the node sat at block 16,038 while the network was at ~402k, peers dropped to zero, and the status still showed "synced". The node's log repeated one error on every block: the Wasm runtime could not be created because its memory pool mapping — a single reservation of 258 GiB of virtual address space (mmap failed to reserve 0x4082000000 bytes) — was refused by the device. With no runtime, every block verification failed, so the node could never advance again.
  • The fix. The rebuilt binary creates runtime instances on demand instead of reserving the whole memory pool up front. Nothing about block validation itself changes: the same runtime code verifies every block, only the way its instances are allocated differs. The failure was reproduced on the host under a virtual-memory limit (the unpatched binary aborts with the identical error) and the fixed binary was verified the same way — full startup, genesis, and block production under the limit that kills the unpatched build.
  • The misleading "synced" display was a consequence, not a separate bug: with all peers gone the node itself no longer reported syncing. With verification working again, an affected node catches up and the status follows.

The app code, the node launch arguments, the database and the permissions (still five) are unchanged from v3.0.1. The full change list is in CHANGELOG.md.

Download

  • quantus-node-v3.0.2.apk — 55,995,644 bytes
  • SHA-256: 36791bd99b597b679190fb39b169cb89b81c70857bf630fd5e96859864eff85e
  • Verify the checksum after downloading, before installing. The APK is signed with the project's release key (certificate SHA-256 65bb1a5fef27d70be1dd12fc12ce3484b4c848fceca92f8898cd96cb2784f6ff) — the same key as every public release since v0.1.0, so it installs over v3.0.1 keeping settings and synced data.

Requirements

  • Android 12 or later, arm64 device
  • About 3 GB of free storage as a guide (measured 1.30 GB in total after a full sync on the reference device)
  • Wi-Fi is strongly recommended for the first sync (about 2 hours on the reference device; a lot of data)

Verified / expected devices

  • Verified: Pixel 9a running GrapheneOS — in-place update over v3.0.1, node at the chain tip (#407,635) and importing new blocks, 12 peers, no warnings or errors in the log.
  • Expected to work: other Android 12+ arm64 devices, including the Xiaomi model this fix targets; a confirmation on that device is pending with the reporter. Aggressive OEM battery savers (Samsung, Xiaomi, …) may stop the resident service — if the node keeps stopping, exempt the app from battery optimization. Device reports via GitHub Issues are welcome; the verified list grows from them.

Known limitations

  • DePIN aggregation is not live yet: recording and proof bundles work entirely on-device, and there is no public aggregation or dashboard listing of records in this release. The record is yours to keep and show.
  • The Connection tab visualizes peer count and your own checkpoints; per-peer detail is not available from the node, so the field shows relationships in aggregate, not individual peers.
  • Automatic start after a device reboot is not implemented; open the app and tap Start after a reboot.
  • Translations (9 languages) have not yet had a native-speaker review.
  • A stalled sync on a poor connection may still need a manual Stop → Start if the automatic restart (at most 3 times in 24 hours) does not clear it.

Feedback, device reports, and bug reports are welcome as GitHub Issues. Security issues: see SECURITY.md instead of a public issue.