From ffc5e0332fa7be6513755bc1861cb3789a8825a2 Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Fri, 20 Feb 2026 17:03:11 -0800 Subject: [PATCH] Check Result before calling .get() on method_meta in getUsedBackends `getUsedBackends()` called `module_->method_meta(...).get()` without checking if the Result was ok, which is undefined behavior on error. Add an `.ok()` check and throw IllegalArgumentException on failure, consistent with how `method_names()` handles its Result above. --- extension/android/jni/jni_layer.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/extension/android/jni/jni_layer.cpp b/extension/android/jni/jni_layer.cpp index 7c5c64e8cf0..8f15fa1f9a1 100644 --- a/extension/android/jni/jni_layer.cpp +++ b/extension/android/jni/jni_layer.cpp @@ -503,7 +503,16 @@ class ExecuTorchJni : public facebook::jni::HybridClass { facebook::jni::local_ref> getUsedBackends( facebook::jni::alias_ref methodName) { - auto methodMeta = module_->method_meta(methodName->toStdString()).get(); + auto method_name = methodName->toStdString(); + auto result = module_->method_meta(method_name); + if (!result.ok()) { + facebook::jni::throwNewJavaException( + "java/lang/IllegalArgumentException", + "method_meta failed for method %s", + method_name.c_str()); + return {}; + } + auto methodMeta = result.get(); std::unordered_set backends; for (auto i = 0; i < methodMeta.num_backends(); i++) { backends.insert(methodMeta.get_backend_name(i).get());