I ran into a Uncaught RangeError: Maximum call stack size exceeded error with reanimated - interestingly the exception below was not a string:
|
void V8Runtime::ReportException(v8::Isolate *isolate, v8::TryCatch *tryCatch) |
|
const { |
|
v8::HandleScope scopedHandle(isolate); |
|
std::string exception = |
|
JSIV8ValueConverter::ToSTLString(isolate, tryCatch->Exception()); |
So it was aborting in ToSTLString for a bit.
Ignoring the exception string and continuing to raise the JSError based on constant string resulted in another crash, which is sensible since the call stack is depleted. It seems that for certain errors, the runtime is basically unrecoverable?
I wonder if checking tryCatch->canContinue will result in false in these cases.
I've resorted to aborting the process completely by throwing std::runtime_error with whatever information we have left.
I ran into a
Uncaught RangeError: Maximum call stack size exceedederror with reanimated - interestingly the exception below was not a string:react-native-v8/src/v8runtime/V8Runtime.cpp
Lines 259 to 263 in 958a471
So it was aborting in
ToSTLStringfor a bit.Ignoring the exception string and continuing to raise the
JSErrorbased on constant string resulted in another crash, which is sensible since the call stack is depleted. It seems that for certain errors, the runtime is basically unrecoverable?I wonder if checking
tryCatch->canContinuewill result in false in these cases.I've resorted to aborting the process completely by throwing std::runtime_error with whatever information we have left.