Skip to content

[Bug] SIGILL / Illegal Instruction (rcpc feature missing) on Samsung Galaxy S10e #9

@lionc2240

Description

@lionc2240

Title: [Bug] SIGILL / Illegal Instruction (rcpc feature missing) on Samsung Galaxy S10e

Environment

  • Device: Samsung Galaxy S10e
  • Architecture: aarch64 (ARMv8.2-A / Exynos 9820 or Snapdragon 855)
  • OS: Android (Termux environment)
  • Installation Method: Manual Patching Guide / Auto-installer wrapper

Describe the Bug

When attempting to run the patched or wrapped agy binary on a Samsung Galaxy S10e, the execution immediately crashes with a SIGILL (Signal 4 / Illegal Instruction) triggered by Go's fast-fail mechanism. The Go runtime detects that the official upstream binary was compiled requiring the rcpc (Release Consistent Processor Consistent) extension, which is not supported by this device's processor.

Terminal Output

~ $ agy --version
FATAL ERROR: This binary was compiled with rcpc enabled, but this feature is not available on this processor (go/sigill-fail-fast).
proot info: vpid 1: terminated with signal 4

Cause Analysis

The core issue stems from the upstream official Linux ARM64 binary (antigravity.google/cli). Google appears to have compiled recent releases with higher baseline ARMv8 hardware requirements (specifically FEAT_LRCPC).

While your patch_agy_va39.py script successfully fixes the TCMalloc 39-bit virtual address layout and the faccessat2 seccomp blocks, it cannot strip out embedded hardware instructions like rcpc if the underlying Go binary explicitly compiled them in.

Suggested Workarounds / Solutions for the Project

Since this is a compilation flag issue from upstream, a few ways to handle or document this in the repository could be:

  1. Upstream Documentation: Add a note in the README/Gist caveats stating that devices lacking rcpc support (like Snapdragon 855 / Exynos 9820 generations and older) will hit a hard SIGILL limit.
  2. Alternative Flag Check: If anyone discovers a byte-patch to trick Go's hardware capability check (though unlikely to prevent an actual crash if the instruction is executed), or if there's an alternative upstream build variant without extensions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions