Works much better. Thank you!! On Thursday, January 7, 2016 at 12:39:33 PM UTC+2, Jochen Eisinger wrote: > > Does that old version already have a file include/v8-platform.h? In that > case, you need either implement that interface and register it with V8 > before creating the first isolate, or link against the libplatform library > and use the implementation from that one. > > On Wed, Jan 6, 2016 at 12:42 PM Danny Dorfman <[email protected] > <javascript:>> wrote: > >> Hello there, >> >> I am running V8 3.31.1, and I am experiencing an issue that looks like GC >> exhaustion. The code I run is as follows: >> >> #include <v8.h> >> #include <iostream> >> >> >> v8::Handle<v8::String> Stringify(v8::Isolate *isolate, v8::Handle<v8:: >> Value> val) >> { >> v8::EscapableHandleScope handle_scope(isolate); >> if (!val.IsEmpty() && val->IsString()) >> { >> v8::Local<v8::String> ret = v8::Handle<v8::String>::Cast(val); >> return handle_scope.Escape(ret); >> } >> v8::String::Utf8Value charVal(val); >> v8::Local<v8::String> ret = v8::String::NewFromUtf8(isolate, *charVal >> ); >> return handle_scope.Escape(ret); >> } >> >> >> void CreateValue(v8::Isolate *isolate, int32_t number) >> { >> if ((number % 10000) == 0) std::cout << "number = " << number << std >> ::endl; >> v8::HandleScope handle_scope(isolate); >> v8::Local<v8::Value> iVal = v8::Integer::New(isolate,number); >> v8::Local<v8::String> sVal = Stringify(isolate,iVal); >> (void)sVal; >> } >> >> >> int main(int argc, char* argv[]) >> { >> v8::V8::Initialize(); >> v8::Isolate* isolate = v8::Isolate::New(); >> v8::Isolate::Scope isolate_scope(isolate); >> v8::HandleScope handle_scope(isolate); >> v8::Local<v8::Context> context = v8::Context::New(isolate); >> v8::Context::Scope context_scope(context); >> for (int32_t i = 0; i < 0x7FFFFFFF; ++i) >> { >> CreateValue(isolate,i); >> } >> return 0; >> } >> >> >> >> When I execute it, it crashes: >> >> # gdb stringify >> GNU gdb (GDB) 7.6 >> Copyright (C) 2013 Free Software Foundation, Inc. >> License GPLv3+: GNU GPL version 3 or later < >> http://gnu.org/licenses/gpl.html> >> This is free software: you are free to change and redistribute it. >> There is NO WARRANTY, to the extent permitted by law. Type "show copying" >> and "show warranty" for details. >> This GDB was configured as "x86_64-redhat-linux-gnu". >> For bug reporting instructions, please see: >> <http://www.gnu.org/software/gdb/bugs/>... >> Reading symbols from /root/v8/samples/hello_stringify...(no debugging >> symbols found)...done. >> (gdb) run >> Starting program: /root/v8/samples/hello_stringify >> [Thread debugging using libthread_db enabled] >> Using host libthread_db library "/lib64/libthread_db.so.1". >> [New Thread 0x7ffff4613700 (LWP 23709)] >> number = 0 >> number = 10000 >> number = 20000 >> number = 30000 >> number = 40000 >> number = 50000 >> number = 60000 >> number = 70000 >> number = 80000 >> number = 90000 >> number = 100000 >> number = 110000 >> number = 120000 >> number = 130000 >> number = 140000 >> number = 150000 >> number = 160000 >> number = 170000 >> number = 180000 >> number = 190000 >> number = 200000 >> number = 210000 >> number = 220000 >> >> Program received signal SIGSEGV, Segmentation fault. >> 0x00007ffff76a8071 in >> v8::internal::MarkCompactCollector::StartSweeperThreads() () from >> /usr/lib64/libv8.so >> (gdb) bt >> #0 0x00007ffff76a8071 in >> v8::internal::MarkCompactCollector::StartSweeperThreads() () from >> /usr/lib64/libv8.so >> #1 0x00007ffff76b2378 in >> v8::internal::MarkCompactCollector::SweepSpaces() () from >> /usr/lib64/libv8.so >> #2 0x00007ffff76bd11c in >> v8::internal::MarkCompactCollector::CollectGarbage() () from >> /usr/lib64/libv8.so >> #3 0x00007ffff767cb56 in v8::internal::Heap::MarkCompact() () from >> /usr/lib64/libv8.so >> #4 0x00007ffff7685b65 in >> v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, >> v8::GCCallbackFlags) () from /usr/lib64/libv8.so >> #5 0x00007ffff7685f7a in >> v8::internal::Heap::CollectGarbage(v8::internal::GarbageCollector, char >> const*, char const*, v8::GCCallbackFlags) () from /usr/lib64/libv8.so >> #6 0x00007ffff7637fce in v8::internal::Factory::NewRawOneByteString(int, >> v8::internal::PretenureFlag) () from /usr/lib64/libv8.so >> #7 0x00007ffff76380f9 in >> v8::internal::Factory::NewStringFromOneByte(v8::internal::Vector<unsigned >> char const>, v8::internal::PretenureFlag) () from /usr/lib64/libv8.so >> #8 0x00007ffff763848e in >> v8::internal::Factory::NewStringFromUtf8(v8::internal::Vector<char const>, >> v8::internal::PretenureFlag) () from /usr/lib64/libv8.so >> #9 0x00007ffff7508b7c in v8::String::NewFromUtf8(v8::Isolate*, char >> const*, v8::String::NewStringType, int) () from /usr/lib64/libv8.so >> #10 0x00000000004013db in Stringify(v8::Isolate*, v8::Handle<v8::Value>) >> () >> #11 0x000000000040148a in CreateValue(v8::Isolate*, int) () >> #12 0x000000000040121d in main () >> >> Any reason why this should be happening? Am I doing anything wrong? >> >> Regards, >> Danny >> >> -- >> -- >> v8-users mailing list >> [email protected] <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 [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> >
-- -- v8-users mailing list [email protected] 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
