Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@marti4d
Copy link
Collaborator

@marti4d marti4d commented Dec 25, 2025

When Android Isolated Process is enabled, every process exists in its own ephemeral UID and SELinux context. That will essentially block ptrace() and I/O to /proc/<pid>, which means minidump-writer currently can't be used to dump Isolated Processes.

This change refactors existing code to do all forbidden operations through a trait, ProcessInspector, that currently only has one implementation - DirectInspector - which calls the APIs directly (like the current implementation does).

In the next change, we will add another implementation of ProcessInspector - remote::InspectorInvoker and its other half remote::InspectorExecutor - That will allow minidump-writer to send ptrace() and /proc/<pid> I/O requests to a remote process that does have the required permissions.

Fixes #166

When Android Isolated Process is enabled, every process exists in its
own ephemeral UID and SELinux context. That will essentially block
`ptrace()` and I/O to `/proc/<pid>`, which means minidump-writer
currently can't be used to dump Isolated Processes.

This change refactors existing code to do all forbidden operations
through a trait, `ProcessInspector`, that currently only has one
implementation - `DirectInspector` - which calls the APIs directly
(like the current implementation does).

In the next change, we will add another implementation of
`ProcessInspector` - `remote::InspectorInvoker` and its other half
`remote::InspectorExecutor` - That will allow minidump-writer to
send `ptrace()` and `/proc/<pid>` I/O requests to a remote process
that does have the required permissions.
Copy link
Contributor

@gabrielesvelto gabrielesvelto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like a refactoring of the existing code but without introducing the new proxy-based ProcessInspector. These changes look fine the way they are but did you forget adding the new implementation to the PR?

Comment on lines +78 to +80
// TODO - Does this ptrace(PTRACE_GETREGS) and ptrace(PTRACE_GETFPREGS) stuff need to be
// abstracted too? Breakpad doesn't do it, but it seems like the type of thing that
// should be stopped by Isolated Processes...
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, given the isolation is around the uid/gid then these calls should also fail unless they're proxy-ed.

}

pub fn write_dso_debug_stream(
process_inspector: &mut dyn ProcessInspector,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed you're declaring this argument as mutable here and in several other places, but from what I can tell it doesn't need to be mutable. Surprisingly clippy doesn't complain 🤷. Is this because of the proxy-ed reader?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Minidump-Writer won't work in an Android Isolated Process

2 participants