Thanks! The issue is fixed.
On Friday, February 23, 2018 at 1:09:11 AM UTC+2, Sathya Gunasekaran wrote: > > Thanks for the report. Fix out for review: > https://chromium-review.googlesource.com/c/v8/v8/+/932968 > > On Thu, Feb 22, 2018 at 12:17 PM, Bogdan Padalko <zaq17...@gmail.com > <javascript:>> wrote: > >> Hi! >> >> While working on upgrading php-v8 extension from 6.5.144 to 6.6.275 I >> find a strange issue: when promise in non-pending stage get >> resolved/rejected, application fails with segfault. While it's an edge >> case, it still possible in userland and luckily it was covered by php-v8 >> unit tests. >> As v8 API says that calling resolve/reject on a promise in non-pending >> state should have no effect, I find this segfault a bit strange. Could it >> be some regression or so? >> >> Here's minimal example to reproduce the issue: hello_world.cpp >> >> #include <v8.h> >> #include <libplatform/libplatform.h> >> >> #include <stdlib.h> >> #include <string.h> >> >> using namespace v8; >> >> int main(int argc, char* argv[]) { >> // Initialize V8. >> //v8::V8::InitializeICU(); >> >> std::unique_ptr<v8::Platform> platform = v8::platform:: >> NewDefaultPlatform(); >> v8::V8::InitializePlatform(platform.get()); >> >> V8::Initialize(); >> >> v8::Isolate::CreateParams create_params; >> create_params.array_buffer_allocator = v8::ArrayBuffer::Allocator:: >> NewDefaultAllocator(); >> >> // Create a new Isolate and make it the current one. >> Isolate* isolate = v8::Isolate::New(create_params); >> >> v8::Persistent<v8::String> test; >> >> { >> Isolate::Scope isolate_scope(isolate); >> >> // Create a stack-allocated handle scope. >> HandleScope handle_scope(isolate); >> >> // Create a new context. >> Local<Context> context = Context::New(isolate); >> >> // Enter the context for compiling and running the hello world >> script. >> Context::Scope context_scope(context); >> >> Local<String> local_value = String::NewFromUtf8(isolate, "test"); >> >> v8::MaybeLocal<v8::Promise::Resolver> maybe_local_resolver = v8:: >> Promise::Resolver::New(context); >> v8::Local<v8::Promise::Resolver> local_resolver = >> maybe_local_resolver.ToLocalChecked(); >> >> local_resolver->Resolve(context, local_value); >> local_resolver->Resolve(context, local_value); >> } >> >> // Dispose the isolate and tear down V8. >> isolate->Dispose(); >> V8::Dispose(); >> V8::ShutdownPlatform(); >> >> return 0; >> } >> >> Build on macOS with >> >> ROOT=/usr/local/opt/v8@6.6 >> LIB_DIR=$ROOT/lib/ >> >> SRC_DIR=$ROOT >> INCLUDE_DIR=$ROOT/include >> >> g++ hello_world.cpp -o hello_world \ >> -Wno-unused-result \ >> -g \ >> -O2 \ >> -std=c++14 \ >> -I$SRC_DIR \ >> -I$INCLUDE_DIR \ >> -L$LIB_DIR \ >> -lv8_libbase \ >> -lv8_libplatform \ >> -lv8 \ >> -lpthread >> >> install_name_tool -add_rpath $LIB_DIR hello_world >> >> And fails with >> $ ./hello_world >> Received signal 11 SEGV_MAPERR 00000000000a >> >> ==== C stack trace =============================== >> >> [0x000106d8ff14] >> [0x7fff6ca6bf5a] >> [0x0001072d0984] >> [0x000106de95e8] >> [0x000106d79bb2] >> [0x7fff6c7ea115] >> [0x000000000001] >> [end of stack trace] >> Segmentation fault: 11 >> >> Same issue on linux - >> https://travis-ci.org/pinepain/php-v8/jobs/344550482 (scroll to the >> bottom). >> >> I would really appreciate any help here as I'm not quite sure whether >> it's an issue on my side or some regression/bug in v8. >> >> Regards, >> Bogdan >> >> -- >> -- >> v8-users mailing list >> v8-u...@googlegroups.com <javascript:> >> http://groups.google.com/group/v8-users >> --- >> You received this message because you are subscribed to the Google Groups >> "v8-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to v8-users+u...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.