I will do that. However, I think I now have to repent is dust and ashes. I tried a use_custom_libcxx = false on macOS where it is easier to do, and code that was failing is now passing on that system. That makes me very sad because, as I said, the repro is very, very small. This makes me a little nervous about the wisdom of V8 embedding it's own libc++. I am literally initializing the platform, engine, and creating an isolate. There is no reason for my libc++ to interact with V8's at all... :-(
This is also a problem because we use libc++ on Linux and I can't see anyway to get that to work on v8 without hacking the v8 build system. I will perform some more tests on macOS to be sure this fixes the problem, but so far it looks good... On Thursday, July 18, 2019 at 9:52:49 AM UTC-4, Jakob Gruber wrote: > > > On Thu, Jul 18, 2019 at 3:10 PM Christopher Nelson <nadias...@gmail.com > <javascript:>> wrote: > >> I appreciate that info, and I have read it. However, that is very >> unlikely to be the problem here. In this case I am not passing any C++ ABI >> objects between libraries, I'm just creating a new isolate. The >> reproduction is so minimal and so simple that is seems very unlikely that >> libc++ is at fault here. It happens deep inside the isolate initialization. >> > > I see. It sounds like you have a full repro to share; could you perhaps > open a bug at crbug.com/v8/new, include the repro, and I will try to have > a look next week. > > >> >> On Thursday, July 18, 2019 at 8:43:42 AM UTC-4, Jakob Gruber wrote: >>> >>> On Thu, Jul 18, 2019 at 2:32 PM Christopher Nelson <nadias...@gmail.com> >>> wrote: >>> >>>> I'm not using the same exact libc++, no. I don't have a problem doing >>>> that, but I'd like to link v8 against MY libc++ instead of linking my app >>>> against v8's libc++. The reason is: I am compiling against a number of >>>> libraries, all of which are compiled against my libc++. Trying to change >>>> them all to compile against V8's libc++ is probably not possible. >>>> >>>> I'm also a little suspicious that libc++ is the problem here because it >>>> works fine in release; which I would expect to be _more_ sensitive. In any >>>> case, if you can tell me how or point me to instructions on how to tell V8 >>>> which libc++ to use I will very happily implement that. >>>> >>> >>> I assume building with a libcxx that is neither the system libcxx nor >>> V8's custom libcxx will need manual work. I'm not an expert on this either, >>> I've just seen folks run into this fairly frequently in recent times. >>> >>> Here's where all of my infos come from: https://crbug.com/v8/9150#c2. >>> Maybe this will help clarify. >>> >>> >>>> >>>> On Thursday, July 18, 2019 at 1:22:04 AM UTC-4, Jakob Gruber wrote: >>>>> >>>>> On Wed, Jul 17, 2019 at 5:48 PM Christopher Nelson < >>>>> nadias...@gmail.com> wrote: >>>>> >>>>>> Thank you so much for the help that has been provided so far. Sadly, >>>>>> I tried both of these suggestions without success. >>>>>> >>>>>> First, I removed all of the build arguments except: >>>>>> >>>>>> is_debug = true >>>>>> target_cpu = "x64" >>>>>> v8_monolithic = true >>>>>> v8_enable_i18n_support = false >>>>>> >>>>>> I built this with much the same results. I also duplicated this >>>>>> problem on macOS with debug. (Release works fine on both platforms.) >>>>>> >>>>>> I also tried setting "use_custom_libcxx = false", but we use libc++ >>>>>> (the one shipped with clang) on Linux and macOS. I couldn't find a way >>>>>> to >>>>>> tell v8 to set -stdlib libc++ without it also wanting that to be the >>>>>> custom >>>>>> one v8 compiles. If I set this value to false then the flag is omitted >>>>>> and >>>>>> it picks up libstdc++ by default, which results in a lot of link errors. >>>>>> >>>>> >>>>> Just to confirm: are you linking your project against the same custom >>>>> libcxx that V8 uses? If yes, then we need to start looking elsewhere >>>>> (than >>>>> use_custom_libcxx) for the problem. If no, that would still be my >>>>> suspicion. >>>>> >>>>> Note also how the backtrace below is in a completely different spot in >>>>> V8 than the one you posted before. And this time in deallocate (before it >>>>> was in an allocation). >>>>> >>>>> >>>>>> >>>>>> My colleague and I have managed to duplicate this in the most trivial >>>>>> hello-world program, which just initializes the engine and creates an >>>>>> isolate. >>>>>> >>>>>> The interesting thing is that the d8 app created by the v8 build is >>>>>> fine. It is only applications that link against the v8 monolith outside >>>>>> the >>>>>> v8 build that experience the problem. We also accidentally noted that if >>>>>> we >>>>>> initialize the engine twice, the problem goes away. >>>>>> >>>>> >>>>>> As I say, this wasn't a problem in 7.2, but in 7.3+ it's happening >>>>>> with perfect reproducibility. For the record, here is the backtrace: >>>>>> >>>>>> #0 __GI_raise (sig=sig@entry=6) at >>>>>> ../sysdeps/unix/sysv/linux/raise.c:50 >>>>>> #1 0x00007ffff7b5a535 in __GI_abort () at abort.c:79 >>>>>> #2 0x00007ffff7bc1726 in __libc_message >>>>>> (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff7ce7952 "%s\n") at >>>>>> ../sysdeps/posix/libc_fatal.c:181 >>>>>> #3 0x00007ffff7bc859a in malloc_printerr >>>>>> (str=str@entry=0x7ffff7ce5a9b "free(): invalid pointer") at malloc.c:5352 >>>>>> #4 0x00007ffff7bca3cc in _int_free (av=<optimized out>, p=<optimized >>>>>> out>, have_lock=<optimized out>) at malloc.c:4181 >>>>>> #5 0x0000000004da70e5 in __do_call () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/new:319 >>>>>> #6 __do_deallocate_handle_size () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/new:277 >>>>>> #7 __do_deallocate_handle_size_align () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/new:247 >>>>>> #8 __libcpp_deallocate () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/new:325 >>>>>> #9 deallocate () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/memory:1816 >>>>>> #10 deallocate () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/memory:1554 >>>>>> #11 ~basic_string () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/string:2138 >>>>>> #12 Print () at ../../src/code-stub-assembler.cc:13702 >>>>>> #13 0x00000000051e254d in LoadKeyValuePairNoSideEffects () at >>>>>> gen/torque-generated/builtins-collections-from-dsl-gen.cc:533 >>>>>> #14 0x0000000004cfc7e1 in AddConstructorEntry () at >>>>>> ../../src/builtins/builtins-collections-gen.cc:163 >>>>>> #15 0x0000000004d10fb6 in operator() () at >>>>>> ../../src/builtins/builtins-collections-gen.cc:270 >>>>>> #16 __invoke<(lambda at >>>>>> ../../src/builtins/builtins-collections-gen.cc:267:22) &, >>>>>> v8::internal::compiler::Node *> () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/type_traits:4399 >>>>>> #17 __call<(lambda at >>>>>> ../../src/builtins/builtins-collections-gen.cc:267:22) &, >>>>>> v8::internal::compiler::Node *> () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/__functional_base:348 >>>>>> #18 operator() () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/functional:1531 >>>>>> #19 __call_impl<std::__1::__function::__alloc_func<(lambda at >>>>>> ../../src/builtins/builtins-collections-gen.cc:267:22), >>>>>> std::__1::allocator<(lambda at >>>>>> ../../src/builtins/builtins-collections-gen.cc:267:22)>, void >>>>>> (v8::internal::compiler::Node *)> > () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/functional:2014 >>>>>> #20 0x0000000004d76fb1 in operator() () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/functional:2127 >>>>>> #21 operator() () at >>>>>> ../../buildtools/third_party/libc++/trunk/include/functional:2351 >>>>>> #22 BuildFastLoop () at ../../src/code-stub-assembler.cc:10997 >>>>>> #23 0x0000000004cfd8e0 in BuildFastLoop () at >>>>>> ../../src/code-stub-assembler.h:3062 >>>>>> #24 AddConstructorEntriesFromFastJSArray () at >>>>>> ../../src/builtins/builtins-collections-gen.cc:278 >>>>>> #25 0x0000000004cfcd55 in AddConstructorEntries () at >>>>>> ../../src/builtins/builtins-collections-gen.cc:207 >>>>>> #26 0x0000000004cfeebf in GenerateConstructor () at >>>>>> ../../src/builtins/builtins-collections-gen.cc:416 >>>>>> #27 0x0000000004cff596 in GenerateMapConstructorImpl () at >>>>>> ../../src/builtins/builtins-collections-gen.cc:740 >>>>>> #28 0x0000000004cff3ea in Generate_MapConstructor () at >>>>>> ../../src/builtins/builtins-collections-gen.cc:734 >>>>>> #29 0x0000000004c6b147 in BuildWithCodeStubAssemblerJS () at >>>>>> ../../src/builtins/setup-builtins-internal.cc:179 >>>>>> #30 SetupBuiltinsInternal () at >>>>>> ../../src/builtins/setup-builtins-internal.cc:353 >>>>>> #31 0x0000000004c62687 in SetupBuiltins () at >>>>>> ../../src/setup-isolate-full.cc:18 >>>>>> #32 0x0000000004395524 in Init () at ../../src/isolate.cc:3394 >>>>>> #33 0x0000000004394c4d in >>>>>> v8::internal::Isolate::InitWithoutSnapshot() () at >>>>>> ../../src/isolate.cc:3284 >>>>>> #34 0x0000000003f50007 in Initialize () at ../../src/api.cc:8211 >>>>>> #35 0x0000000003f5055f in New () at ../../src/api.cc:8223 >>>>>> #36 0x0000000003eb369c in hiram::js::isolate::isolate >>>>>> (this=0x7fffffffcf88) at ../../../../../engine/src/js/isolate.cpp:20 >>>>>> #37 0x0000000003dae967 in ____C_A_T_C_H____T_E_S_T____6 () at >>>>>> ../../../../../engine/test/test_element_node.cpp:62 >>>>>> #38 0x0000000003d01b33 in Catch::TestInvokerAsFunction::invoke >>>>>> (this=0x7677650) at >>>>>> ../../../../../.mm/linux/amd64/debug/include/catch2/catch.hpp:11841 >>>>>> #39 0x0000000003cfc6d6 in Catch::TestCase::invoke (this=0x76dfe60) at >>>>>> ../../../../../.mm/linux/amd64/debug/include/catch2/catch.hpp:11742 >>>>>> #40 0x0000000003cfc60a in Catch::RunContext::invokeActiveTestCase >>>>>> (this=0x7fffffffd818) at >>>>>> ../../../../../.mm/linux/amd64/debug/include/catch2/catch.hpp:10601 >>>>>> #41 0x0000000003cfb164 in Catch::RunContext::runCurrentTest >>>>>> (this=0x7fffffffd818, redirectedCout=..., redirectedCerr=...) at >>>>>> ../../../../../.mm/linux/amd64/debug/include/catch2/catch.hpp:10574 >>>>>> #42 0x0000000003cfa4fc in Catch::RunContext::runTest >>>>>> (this=0x7fffffffd818, testCase=...) at >>>>>> ../../../../../.mm/linux/amd64/debug/include/catch2/catch.hpp:10344 >>>>>> #43 0x0000000003cfe9fd in Catch::(anonymous namespace)::runTests >>>>>> (config=...) at >>>>>> ../../../../../.mm/linux/amd64/debug/include/catch2/catch.hpp:10903 >>>>>> #44 0x0000000003cfe4b2 in Catch::Session::runInternal >>>>>> (this=0x7fffffffdb90) at >>>>>> ../../../../../.mm/linux/amd64/debug/include/catch2/catch.hpp:11098 >>>>>> #45 0x0000000003cfe22b in Catch::Session::run (this=0x7fffffffdb90) >>>>>> at ../../../../../.mm/linux/amd64/debug/include/catch2/catch.hpp:11055 >>>>>> #46 0x0000000003d2d54a in Catch::Session::run<char> >>>>>> (this=0x7fffffffdb90, argc=1, argv=0x7fffffffdde8) at >>>>>> ../../../../../.mm/linux/amd64/debug/include/catch2/catch.hpp:10801 >>>>>> #47 0x0000000003d0fc24 in main (argc=1, argv=0x7fffffffdde8) at >>>>>> ../../../../../engine/test/main.cpp:25 >>>>>> >>>>>> This is the content of the main.cpp: >>>>>> >>>>>> std::unique_ptr<v8::Platform> platform = >>>>>> v8::platform::NewDefaultPlatform(); >>>>>> v8::V8::InitializePlatform(platform.get()); >>>>>> v8::V8::Initialize(); >>>>>> >>>>>> int result = Catch::Session().run(argc, argv); >>>>>> >>>>>> v8::V8::Dispose(); >>>>>> v8::V8::ShutdownPlatform(); >>>>>> >>>>>> And the code that is failing: >>>>>> >>>>>> create_params.array_buffer_allocator = >>>>>> v8::ArrayBuffer::Allocator::NewDefaultAllocator(); >>>>>> i = v8::Isolate::New(create_params); >>>>>> >>>>>> I'm trying more variations, but if there's something else I can do to >>>>>> help anyone help me, I will happily do so. >>>>>> >>>>>> Thanks again! >>>>>> >>>>>> -- >>>>>> -- >>>>>> v8-users mailing list >>>>>> v8-u...@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-u...@googlegroups.com. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/v8-users/f81d746d-0ced-4841-8736-ed5d8ef90bc0%40googlegroups.com >>>>>> >>>>>> <https://groups.google.com/d/msgid/v8-users/f81d746d-0ced-4841-8736-ed5d8ef90bc0%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> -- >>>> -- >>>> v8-users mailing list >>>> v8-u...@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-u...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/v8-users/945801a6-ddce-42c2-9dc4-44334cb794f5%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/v8-users/945801a6-ddce-42c2-9dc4-44334cb794f5%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >> -- >> 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-u...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/v8-users/30e33f59-8f7d-4022-9d31-c3d5eb025fba%40googlegroups.com >> >> <https://groups.google.com/d/msgid/v8-users/30e33f59-8f7d-4022-9d31-c3d5eb025fba%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> 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. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-users/de0379d8-6ba5-48b9-baab-175d0384981d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.