Skip to content

Commit b962cab

Browse files
authored
Merge pull request #67478 from finagolfin/droid-ci
[Backtracing][Linux] Disable invoking process_vm_readv() for older Android APIs
2 parents 33a37b9 + 4cbbb33 commit b962cab

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

stdlib/public/runtime/CrashHandlerLinux.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,9 +660,13 @@ memserver_fault(int sig) {
660660
ssize_t __attribute__((noinline))
661661
memserver_read(void *to, const void *from, size_t len) {
662662
if (memserver_has_ptrace) {
663+
// This won't run for older Android APIs anyway, but it can't be compiled
664+
// either, as process_vm_readv() isn't available.
665+
#if !(defined(__ANDROID_API__) && __ANDROID_API__ < 23)
663666
struct iovec local = { to, len };
664667
struct iovec remote = { const_cast<void *>(from), len };
665668
return process_vm_readv(memserver_pid, &local, 1, &remote, 1, 0);
669+
#endif
666670
} else {
667671
if (!sigsetjmp(memserver_fault_buf, 1)) {
668672
memcpy(to, from, len);
@@ -682,7 +686,12 @@ memserver_entry(void *dummy __attribute__((unused))) {
682686
prctl(PR_SET_NAME, "[backtrace]");
683687
#endif
684688

689+
// process_vm_readv() is not available for older Android APIs.
690+
#if defined(__ANDROID_API__) && __ANDROID_API__ < 23
691+
memserver_has_ptrace = false;
692+
#else
685693
memserver_has_ptrace = !!prctl(PR_CAPBSET_READ, CAP_SYS_PTRACE);
694+
#endif
686695

687696
if (!memserver_has_ptrace) {
688697
struct sigaction sa;

0 commit comments

Comments
 (0)