godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.27k stars 21.04k forks source link

Linking error with Emscripten latest-upstream (LLVM 9): Assertion `hasVal' failed. #30756

Closed akien-mga closed 5 years ago

akien-mga commented 5 years ago

Godot version: 3.2 master (f03c1c8d4fcc)

OS/device including version: Mageia 7 x86_64 Emscripten latest (1.38.39) with latest-upstream branch:

$ emcc -v
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 1.38.39
clang version 9.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 22c4a147a96447b38ce90e59b27c33079f1aa203)
Target: x86_64-unknown-linux-gnu
Thread model: posix

Issue description: After updating emscripten and the latest-upstream branch to get the fix for #30248, and fixing the unrelated issues in #30270, I now get a new linking error that I did not get previously with 1.38.37:

emcc -o core/libcore.javascript.debug.bc thirdparty/misc/fastlz.javascript.debug.bc thirdparty/misc/smaz.javascript.debug.bc thirdparty/misc/hq2x.javascript.debug.bc thirdparty/misc/pcg.javascript.debug.bc thirdparty/misc/triangulator.javascript.debug.bc thirdparty/misc/clipper.javascript.debug.bc thirdparty/zlib/adler32.javascript.debug.bc thirdparty/zlib/compress.javascript.debug.bc thirdparty/zlib/crc32.javascript.debug.bc thirdparty/zlib/deflate.javascript.debug.bc thirdparty/zlib/infback.javascript.debug.bc thirdparty/zlib/inffast.javascript.debug.bc thirdparty/zlib/inflate.javascript.debug.bc thirdparty/zlib/inftrees.javascript.debug.bc thirdparty/zlib/trees.javascript.debug.bc thirdparty/zlib/uncompr.javascript.debug.bc thirdparty/zlib/zutil.javascript.debug.bc thirdparty/minizip/ioapi.javascript.debug.bc thirdparty/minizip/unzip.javascript.debug.bc thirdparty/minizip/zip.javascript.debug.bc thirdparty/zstd/common/debug.javascript.debug.bc thirdparty/zstd/common/entropy_common.javascript.debug.bc thirdparty/zstd/common/error_private.javascript.debug.bc thirdparty/zstd/common/fse_decompress.javascript.debug.bc thirdparty/zstd/common/pool.javascript.debug.bc thirdparty/zstd/common/threading.javascript.debug.bc thirdparty/zstd/common/xxhash.javascript.debug.bc thirdparty/zstd/common/zstd_common.javascript.debug.bc thirdparty/zstd/compress/fse_compress.javascript.debug.bc thirdparty/zstd/compress/hist.javascript.debug.bc thirdparty/zstd/compress/huf_compress.javascript.debug.bc thirdparty/zstd/compress/zstd_compress.javascript.debug.bc thirdparty/zstd/compress/zstd_double_fast.javascript.debug.bc thirdparty/zstd/compress/zstd_fast.javascript.debug.bc thirdparty/zstd/compress/zstd_lazy.javascript.debug.bc thirdparty/zstd/compress/zstd_ldm.javascript.debug.bc thirdparty/zstd/compress/zstd_opt.javascript.debug.bc thirdparty/zstd/compress/zstdmt_compress.javascript.debug.bc thirdparty/zstd/decompress/huf_decompress.javascript.debug.bc thirdparty/zstd/decompress/zstd_ddict.javascript.debug.bc thirdparty/zstd/decompress/zstd_decompress_block.javascript.debug.bc thirdparty/zstd/decompress/zstd_decompress.javascript.debug.bc core/array.javascript.debug.bc core/class_db.javascript.debug.bc core/color.javascript.debug.bc core/command_queue_mt.javascript.debug.bc core/compressed_translation.javascript.debug.bc core/core_string_names.javascript.debug.bc core/dictionary.javascript.debug.bc core/engine.javascript.debug.bc core/error_macros.javascript.debug.bc core/func_ref.javascript.debug.bc core/global_constants.javascript.debug.bc core/image.javascript.debug.bc core/input_map.javascript.debug.bc core/message_queue.javascript.debug.bc core/method_bind.javascript.debug.bc core/node_path.javascript.debug.bc core/object.javascript.debug.bc core/packed_data_container.javascript.debug.bc core/path_remap.javascript.debug.bc core/pool_allocator.javascript.debug.bc core/pool_vector.javascript.debug.bc core/print_string.javascript.debug.bc core/project_settings.javascript.debug.bc core/ref_ptr.javascript.debug.bc core/reference.javascript.debug.bc core/register_core_types.javascript.debug.bc core/resource.javascript.debug.bc core/rid.javascript.debug.bc core/safe_refcount.javascript.debug.bc core/script_debugger_local.javascript.debug.bc core/script_debugger_remote.javascript.debug.bc core/script_encryption_key.gen.javascript.debug.bc core/script_language.javascript.debug.bc core/string_builder.javascript.debug.bc core/string_name.javascript.debug.bc core/translation.javascript.debug.bc core/undo_redo.javascript.debug.bc core/ustring.javascript.debug.bc core/variant.javascript.debug.bc core/variant_call.javascript.debug.bc core/variant_op.javascript.debug.bc core/variant_parser.javascript.debug.bc core/os/dir_access.javascript.debug.bc core/os/file_access.javascript.debug.bc core/os/input.javascript.debug.bc core/os/input_event.javascript.debug.bc core/os/keyboard.javascript.debug.bc core/os/main_loop.javascript.debug.bc core/os/memory.javascript.debug.bc core/os/midi_driver.javascript.debug.bc core/os/mutex.javascript.debug.bc core/os/os.javascript.debug.bc core/os/rw_lock.javascript.debug.bc core/os/semaphore.javascript.debug.bc core/os/thread.javascript.debug.bc core/os/thread_dummy.javascript.debug.bc core/os/thread_safe.javascript.debug.bc thirdparty/mbedtls/library/aes.javascript.debug.bc thirdparty/mbedtls/library/base64.javascript.debug.bc thirdparty/mbedtls/library/md5.javascript.debug.bc thirdparty/mbedtls/library/sha1.javascript.debug.bc thirdparty/mbedtls/library/sha256.javascript.debug.bc thirdparty/mbedtls/library/godot_core_mbedtls_platform.javascript.debug.bc core/math/a_star.javascript.debug.bc core/math/aabb.javascript.debug.bc core/math/audio_frame.javascript.debug.bc core/math/basis.javascript.debug.bc core/math/bsp_tree.javascript.debug.bc core/math/camera_matrix.javascript.debug.bc core/math/crypto_core.javascript.debug.bc core/math/expression.javascript.debug.bc core/math/face3.javascript.debug.bc core/math/geometry.javascript.debug.bc core/math/math_fieldwise.javascript.debug.bc core/math/math_funcs.javascript.debug.bc core/math/plane.javascript.debug.bc core/math/quat.javascript.debug.bc core/math/quick_hull.javascript.debug.bc core/math/random_number_generator.javascript.debug.bc core/math/random_pcg.javascript.debug.bc core/math/rect2.javascript.debug.bc core/math/transform.javascript.debug.bc core/math/transform_2d.javascript.debug.bc core/math/triangle_mesh.javascript.debug.bc core/math/triangulate.javascript.debug.bc core/math/vector2.javascript.debug.bc core/math/vector3.javascript.debug.bc core/io/compression.javascript.debug.bc core/io/config_file.javascript.debug.bc core/io/file_access_buffered.javascript.debug.bc core/io/file_access_compressed.javascript.debug.bc core/io/file_access_encrypted.javascript.debug.bc core/io/file_access_memory.javascript.debug.bc core/io/file_access_network.javascript.debug.bc core/io/file_access_pack.javascript.debug.bc core/io/file_access_zip.javascript.debug.bc core/io/http_client.javascript.debug.bc core/io/image_loader.javascript.debug.bc core/io/ip.javascript.debug.bc core/io/ip_address.javascript.debug.bc core/io/json.javascript.debug.bc core/io/logger.javascript.debug.bc core/io/marshalls.javascript.debug.bc core/io/multiplayer_api.javascript.debug.bc core/io/net_socket.javascript.debug.bc core/io/networked_multiplayer_peer.javascript.debug.bc core/io/packet_peer.javascript.debug.bc core/io/packet_peer_udp.javascript.debug.bc core/io/pck_packer.javascript.debug.bc core/io/resource_format_binary.javascript.debug.bc core/io/resource_importer.javascript.debug.bc core/io/resource_loader.javascript.debug.bc core/io/resource_saver.javascript.debug.bc core/io/stream_peer.javascript.debug.bc core/io/stream_peer_ssl.javascript.debug.bc core/io/stream_peer_tcp.javascript.debug.bc core/io/tcp_server.javascript.debug.bc core/io/translation_loader_po.javascript.debug.bc core/io/xml_parser.javascript.debug.bc core/io/zip_io.javascript.debug.bc core/bind/core_bind.javascript.debug.bc
emranlib core/libcore.javascript.debug.bc
emcc -o bin/godot.javascript.debug.js -O1 -g -s ASSERTIONS=1 -s BINARYEN=1 -s ALLOW_MEMORY_GROWTH=1 -s USE_WEBGL2=1 -s INVOKE_RUN=0 -s NO_EXIT_RUNTIME=1 --js-library platform/javascript/http_request.js --pre-js platform/javascript/id_handler.js platform/javascript/audio_driver_javascript.javascript.debug.bc platform/javascript/http_client_javascript.javascript.debug.bc platform/javascript/javascript_eval.javascript.debug.bc platform/javascript/javascript_main.javascript.debug.bc platform/javascript/os_javascript.javascript.debug.bc main/libmain.javascript.debug.bc main/tests/libtests.javascript.debug.bc modules/libmodules.javascript.debug.bc platform/libplatform.javascript.debug.bc drivers/libdrivers.javascript.debug.bc scene/libscene.javascript.debug.bc servers/libservers.javascript.debug.bc core/libcore.javascript.debug.bc modules/freetype/libfreetype_builtin.javascript.debug.bc
wasm-ld: /b/s/w/ir/cache/builder/emscripten-releases/llvm-project/llvm/include/llvm/ADT/Optional.h:177: const T &llvm::optional_detail::OptionalStorage<unsigned int, true>::getValue() const & [T = unsigned int]: Assertion `hasVal' failed.
 #0 0x00007fb376481af4 PrintStackTraceSignalHandler(void*) (/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/../lib/libLLVM-9svn.so+0x6c6af4)
 #1 0x00007fb37647f7ae llvm::sys::RunSignalHandlers() (/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/../lib/libLLVM-9svn.so+0x6c47ae)
 #2 0x00007fb376481da8 SignalHandler(int) (/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/../lib/libLLVM-9svn.so+0x6c6da8)
 #3 0x00007fb379294560 __restore_rt (/lib64/libpthread.so.0+0x13560)
 #4 0x00007fb37594ba7a raise (/lib64/libc.so.6+0x3ca7a)
 #5 0x00007fb375934524 abort (/lib64/libc.so.6+0x25524)
 #6 0x00007fb37593440f _nl_load_domain.cold.0 (/lib64/libc.so.6+0x2540f)
 #7 0x00007fb3759409a2 (/lib64/libc.so.6+0x319a2)
 #8 0x00000000006a7ad2 (/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/wasm-ld+0x6a7ad2)
 #9 0x0000000000690267 lld::wasm::InputChunk::writeTo(unsigned char*) const (/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/wasm-ld+0x690267)
#10 0x00000000006befad lld::wasm::CustomSection::writeTo(unsigned char*) (/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/wasm-ld+0x6befad)
#11 0x00000000006bac7d std::_Function_handler<void (), void llvm::parallel::detail::parallel_for_each<__gnu_cxx::__normal_iterator<lld::wasm::OutputSection**, std::vector<lld::wasm::OutputSection*, std::allocator<lld::wasm::OutputSection*> > >, (anonymous namespace)::Writer::writeSections()::$_0>(__gnu_cxx::__normal_iterator<lld::wasm::OutputSection**, std::vector<lld::wasm::OutputSection*, std::allocator<lld::wasm::OutputSection*> > >, __gnu_cxx::__normal_iterator<lld::wasm::OutputSection**, std::vector<lld::wasm::OutputSection*, std::allocator<lld::wasm::OutputSection*> > >, (anonymous namespace)::Writer::writeSections()::$_0)::'lambda'()>::_M_invoke(std::_Any_data const&) (/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/wasm-ld+0x6bac7d)
#12 0x00007fb376417625 std::_Function_handler<void (), llvm::parallel::detail::TaskGroup::spawn(std::function<void ()>)::$_0>::_M_invoke(std::_Any_data const&) (/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/../lib/libLLVM-9svn.so+0x65c625)
#13 0x00007fb376417207 llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::work() (/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/../lib/libLLVM-9svn.so+0x65c207)
#14 0x00007fb375cf23d0 (/lib64/libstdc++.so.6+0xbd3d0)
#15 0x00007fb37928a04c start_thread (/lib64/libpthread.so.0+0x904c)
#16 0x00007fb375a13bcf clone (/lib64/libc.so.6+0x104bcf)
shared:ERROR: '/home/akien/Projects/godot/emscripten/emsdk/upstream/bin/wasm-ld -o /tmp/emscripten_temp_lC2B9s/godot.javascript.debug.wasm --allow-undefined --import-memory --import-table --lto-O0 platform/javascript/audio_driver_javascript.javascript.debug.bc platform/javascript/http_client_javascript.javascript.debug.bc platform/javascript/javascript_eval.javascript.debug.bc platform/javascript/javascript_main.javascript.debug.bc platform/javascript/os_javascript.javascript.debug.bc main/libmain.javascript.debug.bc main/tests/libtests.javascript.debug.bc modules/libmodules.javascript.debug.bc platform/libplatform.javascript.debug.bc drivers/libdrivers.javascript.debug.bc scene/libscene.javascript.debug.bc servers/libservers.javascript.debug.bc core/libcore.javascript.debug.bc modules/freetype/libfreetype_builtin.javascript.debug.bc /home/akien/.emscripten_cache/wasm-obj/libc.a /home/akien/.emscripten_cache/wasm-obj/libcompiler_rt.a /home/akien/.emscripten_cache/wasm-obj/libc-wasm.a /home/akien/.emscripten_cache/wasm-obj/libc++-noexcept.a /home/akien/.emscripten_cache/wasm-obj/libc++abi.a /home/akien/.emscripten_cache/wasm-obj/libc-extras.a /home/akien/.emscripten_cache/wasm-obj/libgl-webgl2.a /home/akien/.emscripten_cache/wasm-obj/libdlmalloc-debug.a /home/akien/.emscripten_cache/wasm-obj/libpthreads_stub.a /home/akien/.emscripten_cache/wasm-obj/libcompiler_rt_wasm.a /home/akien/.emscripten_cache/wasm-obj/libc_rt_wasm.a -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --export __wasm_call_ctors --export __data_end --export main --export malloc --export free --export setThrew --export __errno_location --export fflush --export _get_environ --export htonl --export htons --export ntohs --export realloc --export _get_tzname --export _get_daylight --export _get_timezone --export emscripten_GetProcAddress --export strstr -z stack-size=5242880 --initial-memory=16777216 --no-entry --global-base=1024' failed (-6)
scons: *** [bin/godot.javascript.debug.js] Error 1

I assume this is an upstream issue.

Steps to reproduce:

akien-mga commented 5 years ago

Should be fixed on latest upstream release: emscripten-core/emscripten#9023.