emscripten-core / emscripten

Emscripten: An LLVM-to-WebAssembly Compiler
Other
25.75k stars 3.3k forks source link

"duplicate symbol: emscripten_memcpy_big" within emsdk cache #19382

Closed kallaballa closed 1 year ago

kallaballa commented 1 year ago

Please include the following in your bug report:

Version of emscripten/emsdk: emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.38 (9eff02bc816c50ab0e3b70a3bd5b72a8dc2893a2) clang version 17.0.0 (https://github.com/llvm/llvm-project 004bf170c6cbaa049601bcf92f86a9459aec2dc2) Target: wasm32-unknown-emscripten Thread model: posix InstalledDir: /home/elchaschab/emsdk/upstream/bin

Failing command line in full:

[ 90%] Linking CXX executable ../../bin/example_v4d_vector_graphics_and_fb.js
em++: warning: -pthread + ALLOW_MEMORY_GROWTH may run non-wasm code slowly, see https://github.com/WebAssembly/design/issues/1271 [-Wpthreads-mem-growth]
wasm-ld: error: duplicate symbol: emscripten_memcpy_big
>>> defined in /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libbulkmemory.a(emscripten_memcpy_big.o)
>>> defined in /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libstandalonewasm-nocatch-memgrow.a(standalone.o)
em++: error: '/home/elchaschab/emsdk/upstream/bin/wasm-ld -o ../../bin/example_v4d_vector_graphics_and_fb.wasm --gc-sections CMakeFiles/example_v4d_vector_graphics_and_fb.dir/samples/vector_graphics_and_fb.cpp.o -L/home/elchaschab/devel/opencv_wasm/modules/v4d/../../lib ../../lib/libopencv_core.a ../../lib/libopencv_imgproc.a ../../lib/libopencv_videoio.a ../../lib/libopencv_video.a ../../lib/libopencv_imgcodecs.a ../../lib/libopencv_v4d.a ../../lib/libopencv_face.a ../../lib/libopencv_tracking.a ../../lib/libopencv_objdetect.a ../../lib/libopencv_stitching.a ../../lib/libopencv_optflow.a ../../lib/libopencv_imgcodecs.a ../../lib/libopencv_features2d.a ../../lib/libopencv_dnn.a ../../lib/libopencv_flann.a ../../lib/libnanogui.a ../../lib/libopencv_videoio.a /home/elchaschab/devel/opencv_wasm/modules/v4d/../../lib/libnanogui.a ../../3rdparty/lib/libquirc.a ../../lib/libopencv_photo.a ../../lib/libopencv_plot.a ../../lib/libopencv_ximgproc.a ../../lib/libopencv_video.a ../../lib/libopencv_imgcodecs.a ../../3rdparty/lib/liblibopenjp2.a ../../lib/libopencv_dnn.a ../../3rdparty/lib/liblibprotobuf.a ../../lib/libopencv_calib3d.a ../../lib/libopencv_features2d.a ../../lib/libopencv_imgproc.a ../../lib/libopencv_flann.a ../../lib/libopencv_core.a /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libz.a -L/home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libz.a /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/crtbegin.o /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/crt1.o --whole-archive -lembind-rtti -lGL-mt-webgl2 --no-whole-archive -lal -lhtml5 -lbulkmemory -lstandalonewasm-nocatch-memgrow -lstubs -lc-mt -ldlmalloc-mt -lcompiler_rt-mt -lc++-mt-noexcept -lc++abi-mt-noexcept -lsockets-mt -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr /tmp/tmpc05tsvuklibemscripten_js_symbols.so --import-memory --shared-memory --export-if-defined=main --export-if-defined=v4dInitCapture --export-if-defined=_emscripten_thread_init --export-if-defined=_emscripten_thread_exit --export-if-defined=_emscripten_thread_crashed --export-if-defined=_emscripten_tls_init --export-if-defined=pthread_self --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=__main_argc_argv --export=stackSave --export=stackRestore --export=stackAlloc --export=__errno_location --export=emscripten_dispatch_to_thread_ --export=_emscripten_thread_free_data --export=emscripten_main_runtime_thread_id --export=emscripten_main_thread_process_queued_calls --export=_emscripten_run_in_main_runtime_thread_js --export=emscripten_stack_set_limits --export=malloc --export=free --export-table -z stack-size=65536 --initial-memory=134217728 --max-memory=2147483648 --global-base=1024' failed (returned 1)
make[2]: *** [modules/v4d/CMakeFiles/example_v4d_vector_graphics_and_fb.dir/build.make:133: bin/example_v4d_vector_graphics_and_fb.js] Error 1
make[1]: *** [CMakeFiles/Makefile2:3336: modules/v4d/CMakeFiles/example_v4d_vector_graphics_and_fb.dir/all] Error 2
make: *** [Makefile:166: all] Error 2

Full link command and output with -v appended: Even for runtime issues it helps a lot if you can include the full link command. Adding -v to the link command will show all of the sub-commands run which can help us diagnose your issue. I tried adding -v to the link command which printed the clang version.

The above link command used to work without problems. I tried repopulating a fresh emsdk and a clean build but with the same result.

sbc100 commented 1 year ago

can you run with make VERBOSE=1 so that we can see the full emcc link command? (BTW, I strongly recommend switching to Ninja (cmake -G Ninja) which always shows commands that fail).

kallaballa commented 1 year ago
[ 90%] Linking CXX executable ../../bin/example_v4d_vector_graphics_and_fb.js
cd /home/elchaschab/devel/opencv_wasm/modules/v4d && /usr/bin/cmake -E copy /home/elchaschab/devel/v4d/modules/v4d/samples/example_v4d_vector_graphics_and_fb.html /home/elchaschab/devel/opencv_wasm/modules/v4d/../../bin/example_v4d_vector_graphics_and_fb.html
cd /home/elchaschab/devel/opencv_wasm/modules/v4d && /usr/bin/cmake -E cmake_link_script CMakeFiles/example_v4d_vector_graphics_and_fb.dir/link.txt --verbose=1
/home/elchaschab/emsdk/upstream/emscripten/em++ -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE_STRICT=0 -s PTHREAD_POOL_SIZE=8 -s USE_ZLIB=1 -msimd128   -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -Wno-deprecated-enum-enum-conversion -Wno-deprecated-anon-enum-enum-conversion -fdiagnostics-show-option -pthread -Qunused-arguments -ffunction-sections -fdata-sections  -fvisibility=hidden -fvisibility-inlines-hidden -DOPENCV_V4D_USE_ES3=1 -DNANOGUI_USE_GLES=1 -DNANOGUI_GLES_VERSION=3 -Wno-deprecated-enum-enum-conversion -O2 -g -DNDEBUG   -Wl,--gc-sections -sENVIRONMENT=web,worker -sOFFSCREENCANVAS_SUPPORT -sSTANDALONE_WASM -sOFFSCREENCANVASES_TO_PTHREAD=#offscreenCanvas -sEXPORTED_FUNCTIONS=_main,_v4dInitCapture -sEXPORTED_RUNTIME_METHODS=ccall -sPROXY_TO_PTHREAD=1 --use-preload-plugins --preload-file doc/lena.png -sINITIAL_MEMORY=128MB -sALLOW_MEMORY_GROWTH=1 -sUSE_GLFW=3 -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 --bind -v @CMakeFiles/example_v4d_vector_graphics_and_fb.dir/objects1 -o ../../bin/example_v4d_vector_graphics_and_fb.js @CMakeFiles/example_v4d_vector_graphics_and_fb.dir/linkLibs.rsp
 "/home/elchaschab/emsdk/upstream/bin/clang" --version
em++: warning: -pthread + ALLOW_MEMORY_GROWTH may run non-wasm code slowly, see https://github.com/WebAssembly/design/issues/1271 [-Wpthreads-mem-growth]
 "/home/elchaschab/emsdk/upstream/emscripten/tools/file_packager" ../../bin/example_v4d_vector_graphics_and_fb.data --from-emcc --preload doc/lena.png --use-preload-plugins --no-node
 "/home/elchaschab/emsdk/upstream/bin/wasm-ld" -o ../../bin/example_v4d_vector_graphics_and_fb.wasm --gc-sections CMakeFiles/example_v4d_vector_graphics_and_fb.dir/samples/vector_graphics_and_fb.cpp.o -L/home/elchaschab/devel/opencv_wasm/modules/v4d/../../lib ../../lib/libopencv_core.a ../../lib/libopencv_imgproc.a ../../lib/libopencv_videoio.a ../../lib/libopencv_video.a ../../lib/libopencv_imgcodecs.a ../../lib/libopencv_v4d.a ../../lib/libopencv_face.a ../../lib/libopencv_tracking.a ../../lib/libopencv_objdetect.a ../../lib/libopencv_stitching.a ../../lib/libopencv_optflow.a ../../lib/libopencv_imgcodecs.a ../../lib/libopencv_features2d.a ../../lib/libopencv_dnn.a ../../lib/libopencv_flann.a ../../lib/libnanogui.a ../../lib/libopencv_videoio.a /home/elchaschab/devel/opencv_wasm/modules/v4d/../../lib/libnanogui.a ../../3rdparty/lib/libquirc.a ../../lib/libopencv_photo.a ../../lib/libopencv_plot.a ../../lib/libopencv_ximgproc.a ../../lib/libopencv_video.a ../../lib/libopencv_imgcodecs.a ../../3rdparty/lib/liblibopenjp2.a ../../lib/libopencv_dnn.a ../../3rdparty/lib/liblibprotobuf.a ../../lib/libopencv_calib3d.a ../../lib/libopencv_features2d.a ../../lib/libopencv_imgproc.a ../../lib/libopencv_flann.a ../../lib/libopencv_core.a /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libz.a -L/home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libz.a /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/crtbegin.o /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/crt1.o --whole-archive -lembind-rtti -lGL-mt-webgl2 --no-whole-archive -lal -lhtml5 -lbulkmemory -lstandalonewasm-nocatch-memgrow -lstubs -lc-mt -ldlmalloc-mt -lcompiler_rt-mt -lc++-mt-noexcept -lc++abi-mt-noexcept -lsockets-mt -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr /tmp/tmpqk_sc88slibemscripten_js_symbols.so --import-memory --shared-memory --export-if-defined=main --export-if-defined=v4dInitCapture --export-if-defined=_emscripten_thread_init --export-if-defined=_emscripten_thread_exit --export-if-defined=_emscripten_thread_crashed --export-if-defined=_emscripten_tls_init --export-if-defined=pthread_self --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=__main_argc_argv --export=stackSave --export=stackRestore --export=stackAlloc --export=__errno_location --export=emscripten_dispatch_to_thread_ --export=_emscripten_thread_free_data --export=emscripten_main_runtime_thread_id --export=emscripten_main_thread_process_queued_calls --export=_emscripten_run_in_main_runtime_thread_js --export=emscripten_stack_set_limits --export=malloc --export=free --export-table -z stack-size=65536 --initial-memory=134217728 --max-memory=2147483648 --global-base=1024
wasm-ld: error: duplicate symbol: emscripten_memcpy_big
>>> defined in /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libbulkmemory.a(emscripten_memcpy_big.o)
>>> defined in /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libstandalonewasm-nocatch-memgrow.a(standalone.o)
em++: error: '/home/elchaschab/emsdk/upstream/bin/wasm-ld -o ../../bin/example_v4d_vector_graphics_and_fb.wasm --gc-sections CMakeFiles/example_v4d_vector_graphics_and_fb.dir/samples/vector_graphics_and_fb.cpp.o -L/home/elchaschab/devel/opencv_wasm/modules/v4d/../../lib ../../lib/libopencv_core.a ../../lib/libopencv_imgproc.a ../../lib/libopencv_videoio.a ../../lib/libopencv_video.a ../../lib/libopencv_imgcodecs.a ../../lib/libopencv_v4d.a ../../lib/libopencv_face.a ../../lib/libopencv_tracking.a ../../lib/libopencv_objdetect.a ../../lib/libopencv_stitching.a ../../lib/libopencv_optflow.a ../../lib/libopencv_imgcodecs.a ../../lib/libopencv_features2d.a ../../lib/libopencv_dnn.a ../../lib/libopencv_flann.a ../../lib/libnanogui.a ../../lib/libopencv_videoio.a /home/elchaschab/devel/opencv_wasm/modules/v4d/../../lib/libnanogui.a ../../3rdparty/lib/libquirc.a ../../lib/libopencv_photo.a ../../lib/libopencv_plot.a ../../lib/libopencv_ximgproc.a ../../lib/libopencv_video.a ../../lib/libopencv_imgcodecs.a ../../3rdparty/lib/liblibopenjp2.a ../../lib/libopencv_dnn.a ../../3rdparty/lib/liblibprotobuf.a ../../lib/libopencv_calib3d.a ../../lib/libopencv_features2d.a ../../lib/libopencv_imgproc.a ../../lib/libopencv_flann.a ../../lib/libopencv_core.a /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libz.a -L/home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libz.a /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/crtbegin.o /home/elchaschab/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/crt1.o --whole-archive -lembind-rtti -lGL-mt-webgl2 --no-whole-archive -lal -lhtml5 -lbulkmemory -lstandalonewasm-nocatch-memgrow -lstubs -lc-mt -ldlmalloc-mt -lcompiler_rt-mt -lc++-mt-noexcept -lc++abi-mt-noexcept -lsockets-mt -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr /tmp/tmpqk_sc88slibemscripten_js_symbols.so --import-memory --shared-memory --export-if-defined=main --export-if-defined=v4dInitCapture --export-if-defined=_emscripten_thread_init --export-if-defined=_emscripten_thread_exit --export-if-defined=_emscripten_thread_crashed --export-if-defined=_emscripten_tls_init --export-if-defined=pthread_self --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=__main_argc_argv --export=stackSave --export=stackRestore --export=stackAlloc --export=__errno_location --export=emscripten_dispatch_to_thread_ --export=_emscripten_thread_free_data --export=emscripten_main_runtime_thread_id --export=emscripten_main_thread_process_queued_calls --export=_emscripten_run_in_main_runtime_thread_js --export=emscripten_stack_set_limits --export=malloc --export=free --export-table -z stack-size=65536 --initial-memory=134217728 --max-memory=2147483648 --global-base=1024' failed (returned 1)
make[2]: *** [modules/v4d/CMakeFiles/example_v4d_vector_graphics_and_fb.dir/build.make:133: bin/example_v4d_vector_graphics_and_fb.js] Error 1
make[2]: Leaving directory '/home/elchaschab/devel/opencv_wasm'
make[1]: *** [CMakeFiles/Makefile2:3336: modules/v4d/CMakeFiles/example_v4d_vector_graphics_and_fb.dir/all] Error 2
make[1]: Leaving directory '/home/elchaschab/devel/opencv_wasm'
make: *** [Makefile:166: all] Error 2
kallaballa commented 1 year ago

(BTW, I strongly recommend switching to Ninja (cmake -G Ninja) which always shows commands that fail).

noted