Skip to content

Manager crashes with SIGABRT on Samsung Knox: seapp_contexts lookup fails for spoofed process name (org.matrix.vector.manager) #915

Description

@opassoca

Steps to reproduce

  1. Fresh update to Vector v2.2 on a Samsung device with Knox/OneUI.
  2. Tap the manager notification/shortcut, or trigger the official launch intent directly:
    am start -a android.intent.action.MAIN -c org.lsposed.manager.LAUNCH_MANAGER -n com.android.shell/.BugreportWarningActivity
  3. Process aborts immediately (SIGABRT), before any UI renders.

Expected behaviour

Manager UI opens normally (parasitic launch hosted inside com.android.shell).

Actual behaviour

Zygote aborts while specializing the process. logcat:

E SELinux: seapp_context_lookup_internal: No match for app with uid 2000, seinfo platform:privapp:targetSdkVersion=35:partition=system:complete, name org.matrix.vector.manager username shell appid 2000
E SELinux: selinux_android_setcontext: Error setting context for app with uid 2000 ...
F libc: Fatal signal 6 (SIGABRT) ... in tid ... (ch_zygote)
F DEBUG: Abort message: 'JNI FatalError called: (org.matrix.vector.manager) frameworks/base/core/jni/com_android_internal_os_Zygote.cpp:2179: selinux_android_setcontext(2000, 0, "platform:privapp:targetSdkVersion=35:partition=system:complete", "org.matrix.vector.manager") failed'

Confirmed identical whether triggered via the (stale) notification or the raw official launch intent, so this is not a shortcut-caching issue, it is the specialize call itself failing.

Root cause (as far as I traced it)

The parasitic manager specializes its hosted process under the synthetic identity org.matrix.vector.manager (uid 2000 / shell), apparently for stealth. The seapp_contexts of this ROM only has a name-matched rule for the real com.android.shell:

user=shell seinfo=platform domain=shell name=com.android.shell type=shell_data_file

There is no generic seinfo-only fallback that matches either: the seinfo string passed is the full compound platform:privapp:targetSdkVersion=35:partition=system:complete, which is not equal to any existing seinfo= value in the file. So the lookup for the fake name fails outright and Zygote hard-aborts instead of degrading gracefully.

Possibly the same underlying dependency as #483 ("reinstall com.android.shell cause this problem on Samsung Galaxy S10+(OneUI4.1)"): both seem to trace back to the parasitic manager depending on the identity/context of com.android.shell being resolvable, just triggered differently.

What I tried (did not work, documenting so it is not repeated)

Added a name-matched seapp_contexts entry via a KernelSU systemless module, mirroring the existing com.android.shell line with name=org.matrix.vector.manager. On this ROM, plat_seapp_contexts is read by init before SELinux relabeling of the magic-mounted overlay completes, so this caused a boot loop. Reverted (module removed), device stable again, crash unchanged. Not proposing this as a fix, just flagging that patching seapp_contexts via magic-mount is fragile at this boot stage on Knox.

Environment

  • Device: Samsung Galaxy S10+ (SM-G973F), Exynos 9820, custom ROM (ExtremeROM Nexus)
  • Root: KernelSU 1.0.9 + ZygiskNext 1.3.2
  • Vector: v2.2 (versionCode 3080), updated from LSPosed v1.11.0
  • Android 15 (API 35)

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