Skip to content

Commit

Permalink
If JSC fails to load when starting RN, expose that error to the caller
Browse files Browse the repository at this point in the history
Summary:
See the comments for more info.

Changelog: [Android] [Changed] - Improve exception message when JSC loading fails

Reviewed By: tmikov

Differential Revision: D19917034

fbshipit-source-id: d846f542c31e9c94edcee240c2935d77d48d1f2a
  • Loading branch information
mhorowitz authored and facebook-github-bot committed Feb 18, 2020
1 parent ef021ea commit 65d3167
Showing 1 changed file with 27 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -297,8 +297,34 @@ private JavaScriptExecutorFactory getDefaultJSExecutorFactory(
SoLoader.loadLibrary("jscexecutor");
return new JSCExecutorFactory(appName, deviceName);
} catch (UnsatisfiedLinkError jscE) {
// https://github.com/facebook/hermes/issues/78 shows that
// people who aren't trying to use Hermes are having issues.
// https://github.com/facebook/react-native/issues/25923#issuecomment-554295179
// includes the actual JSC error in at least one case.
//
// So, if "__cxa_bad_typeid" shows up in the jscE exception
// message, then we will assume that's the failure and just
// throw now.

if (jscE.getMessage().contains("__cxa_bad_typeid")) {
throw jscE;
}

// Otherwise use Hermes
return new HermesExecutorFactory();
try {
return new HermesExecutorFactory();

This comment has been minimized.

Copy link
@iqqmuT

iqqmuT Jan 19, 2021

Contributor

This line never throws UnsatisfiedLinkError exception. See PR #30749

} catch (UnsatisfiedLinkError hermesE) {
// If we get here, either this is a JSC build, and of course
// Hermes failed (since it's not in the APK), or it's a Hermes
// build, and Hermes had a problem.

// We suspect this is a JSC issue (it's the default), so we
// will throw that exception, but we will print hermesE first,
// since it could be a Hermes issue and we don't want to
// swallow that.
hermesE.printStackTrace();
throw jscE;
}
}
}
}

0 comments on commit 65d3167

Please sign in to comment.