From 2f73009c3113a10cb3ed6f7e2a1dd0004aa54fa2 Mon Sep 17 00:00:00 2001 From: a Date: Sun, 1 Mar 2026 02:59:24 -0500 Subject: [PATCH 1/5] Hook to be informed of tor_raw_abort_ in TorService, before process crashes. --- external/tor | 2 +- .../src/main/java/org/torproject/jni/TorService.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/external/tor b/external/tor index 23d5b73f..4eb35de7 160000 --- a/external/tor +++ b/external/tor @@ -1 +1 @@ -Subproject commit 23d5b73f2f1fe84067e33bd3c0c798ce7cbd2bad +Subproject commit 4eb35de7105d053849ec954a0cc26f624af2c84f diff --git a/tor-android-binary/src/main/java/org/torproject/jni/TorService.java b/tor-android-binary/src/main/java/org/torproject/jni/TorService.java index 85143949..9aa325ac 100644 --- a/tor-android-binary/src/main/java/org/torproject/jni/TorService.java +++ b/tor-android-binary/src/main/java/org/torproject/jni/TorService.java @@ -230,6 +230,15 @@ private static File getAppTorServiceDataDir(Context context) { private native int runMain(); + public native static boolean fatal(); + public static final String STATUS_ABORT = "ABORTING"; + private static Context ctx; + public static void onTorRawAbort() { + Log.wtf("OrbotAbortReport", "made it to java abort"); + broadcastStatus(ctx, STATUS_ABORT); + } + + public class LocalBinder extends Binder { public TorService getService() { return TorService.this; @@ -248,6 +257,7 @@ public IBinder onBind(Intent intent) { public void onCreate() { super.onCreate(); broadcastStatus(this, STATUS_STARTING); + ctx = this; startTorServiceThread(); } @@ -443,6 +453,7 @@ private void startTorServiceThread() { @Override public void onDestroy() { super.onDestroy(); + ctx = null; if (torControlConnection != null) { torControlConnection.removeRawEventListener(startedEventListener); } From 87934a58ad307d2de0d107b1137fc6c9feefede9 Mon Sep 17 00:00:00 2001 From: a Date: Mon, 9 Mar 2026 16:35:06 -0400 Subject: [PATCH 2/5] disable unit tests for now --- external/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/external/Makefile b/external/Makefile index 96251f79..fd03338c 100644 --- a/external/Makefile +++ b/external/Makefile @@ -249,6 +249,7 @@ tor/Makefile: tor/configure.ac tor/Makefile.am --enable-zstd \ --disable-lzma \ --disable-module-relay \ + --disable-unittests \ --disable-module-dirauth \ --disable-asciidoc \ --disable-tool-name-check \ @@ -288,8 +289,8 @@ ifneq ($(DEBUG), 1) ls -l $(INSTALL_DIR)/libtor.so endif grep "Java_org_torproject_jni_TorService" $(INSTALL_DIR)/libtor.so - install -d $(EXTERNAL_ROOT)/test/$(APP_ABI) - cp tor/src/test/test tor/src/test/test-memwipe tor/src/test/test-slow \ +# install -d $(EXTERNAL_ROOT)/test/$(APP_ABI) +# cp tor/src/test/test tor/src/test/test-memwipe tor/src/test/test-slow \ $(EXTERNAL_ROOT)/test/$(APP_ABI) PREBUILD_SHARED_LIBRARY-clean: From 4a934f984fd4b4e6e3daf39f5f0cb5331733a638 Mon Sep 17 00:00:00 2001 From: a Date: Mon, 9 Mar 2026 16:42:12 -0400 Subject: [PATCH 3/5] . --- external/tor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/tor b/external/tor index 4eb35de7..247a93a4 160000 --- a/external/tor +++ b/external/tor @@ -1 +1 @@ -Subproject commit 4eb35de7105d053849ec954a0cc26f624af2c84f +Subproject commit 247a93a48314ba1d61b1a3484484ce32f01ae1f7 From 002993f59670e12b0ecca2d3f762e34389954af9 Mon Sep 17 00:00:00 2001 From: a Date: Mon, 9 Mar 2026 16:52:52 -0400 Subject: [PATCH 4/5] java, squash --- .../src/main/java/org/torproject/jni/TorService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/tor-android-binary/src/main/java/org/torproject/jni/TorService.java b/tor-android-binary/src/main/java/org/torproject/jni/TorService.java index 9aa325ac..7669fc26 100644 --- a/tor-android-binary/src/main/java/org/torproject/jni/TorService.java +++ b/tor-android-binary/src/main/java/org/torproject/jni/TorService.java @@ -235,6 +235,7 @@ private static File getAppTorServiceDataDir(Context context) { private static Context ctx; public static void onTorRawAbort() { Log.wtf("OrbotAbortReport", "made it to java abort"); + if (ctx == null) return; // TorService's onCreate() hasn't been called, no valid context. broadcastStatus(ctx, STATUS_ABORT); } From af1b6e3acbcad6342a01b638cfbbd624e0536366 Mon Sep 17 00:00:00 2001 From: a Date: Mon, 9 Mar 2026 17:22:24 -0400 Subject: [PATCH 5/5] WIP --- .../src/main/java/org/torproject/jni/TorService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/tor-android-binary/src/main/java/org/torproject/jni/TorService.java b/tor-android-binary/src/main/java/org/torproject/jni/TorService.java index 7669fc26..755ece74 100644 --- a/tor-android-binary/src/main/java/org/torproject/jni/TorService.java +++ b/tor-android-binary/src/main/java/org/torproject/jni/TorService.java @@ -236,6 +236,7 @@ private static File getAppTorServiceDataDir(Context context) { public static void onTorRawAbort() { Log.wtf("OrbotAbortReport", "made it to java abort"); if (ctx == null) return; // TorService's onCreate() hasn't been called, no valid context. + Log.wtf("OrbotAbortReport", "sending abort "); broadcastStatus(ctx, STATUS_ABORT); }