Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

-s SINGLE_FILE=1 with -sWASM_WORKERS=1 results in KeyError: 'libwasm_workers' #22175

Open
patrick99e99 opened this issue Jul 2, 2024 · 1 comment · May be fixed by #22176
Open

-s SINGLE_FILE=1 with -sWASM_WORKERS=1 results in KeyError: 'libwasm_workers' #22175

patrick99e99 opened this issue Jul 2, 2024 · 1 comment · May be fixed by #22176

Comments

@patrick99e99
Copy link

patrick99e99 commented Jul 2, 2024

Please include the following in your bug report:

Version of emscripten/emsdk:

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.61 (67fa4c16496b157a7fc3377afd69ee0445e8a6e3)

Failing command line in full:

emcc *.cpp -o emulator/emulator.js -sAUDIO_WORKLET=1 -sWASM_WORKERS=1 -sSINGLE_FILE=1 -sEXPORTED_FUNCTIONS=_speakLPC,_stopSpeaking,_main,_malloc,_free -sEXPORTED_RUNTIME_METHODS=ccall,cwrap,callMain,addFunction,removeFunction -sEXPORT_ES6=1 -sMODULARIZE=1 -sALLOW_MEMORY_GROWTH=1 -sALLOW_TABLE_GROWTH=1

Full link command and output with -v appended:

emcc -v *.cpp -o emulator/emulator.js -sAUDIO_WORKLET=1 -sWASM_WORKERS=1 -sSINGLE_FILE=1 -sEXPORTED_FUNCTIONS=_speakLPC,_stopSpeaking,_main,_malloc,_free -sEXPORTED_RUNTIME_METHODS=ccall,cwrap,callMain,addFunction,removeFunction -sEXPORT_ES6=1 -sMODULARIZE=1 -sALLOW_MEMORY_GROWTH=1 -sALLOW_TABLE_GROWTH=1
 /Users/patrick/coding/webassembly/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -D__EMSCRIPTEN_SHARED_MEMORY__=1 -D__EMSCRIPTEN_WASM_WORKERS__=1 -DEMSCRIPTEN -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -matomics -mbulk-memory emulator.cpp -c -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/emulator_0.o
clang version 19.0.0git (https:/github.com/llvm/llvm-project 7cfffe74eeb68fbb3fb9706ac7071f8caeeb6520)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/patrick/coding/webassembly/emsdk/upstream/bin
 (in-process)
 "/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name emulator.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -v -fcoverage-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -resource-dir /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19 -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D __EMSCRIPTEN_WASM_WORKERS__=1 -D EMSCRIPTEN -isysroot /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include -Werror=implicit-function-declaration -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/emulator_0.o -x c++ emulator.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-apple-darwin21.5.0
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
 /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
 /Users/patrick/coding/webassembly/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -D__EMSCRIPTEN_SHARED_MEMORY__=1 -D__EMSCRIPTEN_WASM_WORKERS__=1 -DEMSCRIPTEN -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -matomics -mbulk-memory speech_synthesizer.cpp -c -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/speech_synthesizer_1.o
clang version 19.0.0git (https:/github.com/llvm/llvm-project 7cfffe74eeb68fbb3fb9706ac7071f8caeeb6520)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/patrick/coding/webassembly/emsdk/upstream/bin
 (in-process)
 "/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name speech_synthesizer.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -v -fcoverage-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -resource-dir /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19 -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D __EMSCRIPTEN_WASM_WORKERS__=1 -D EMSCRIPTEN -isysroot /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include -Werror=implicit-function-declaration -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/speech_synthesizer_1.o -x c++ speech_synthesizer.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-apple-darwin21.5.0
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
 /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
 /Users/patrick/coding/webassembly/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -D__EMSCRIPTEN_SHARED_MEMORY__=1 -D__EMSCRIPTEN_WASM_WORKERS__=1 -DEMSCRIPTEN -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -matomics -mbulk-memory tms5220.cpp -c -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/tms5220_2.o
clang version 19.0.0git (https:/github.com/llvm/llvm-project 7cfffe74eeb68fbb3fb9706ac7071f8caeeb6520)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/patrick/coding/webassembly/emsdk/upstream/bin
 (in-process)
 "/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name tms5220.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -v -fcoverage-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -resource-dir /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19 -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D __EMSCRIPTEN_WASM_WORKERS__=1 -D EMSCRIPTEN -isysroot /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include -Werror=implicit-function-declaration -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/tms5220_2.o -x c++ tms5220.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-apple-darwin21.5.0
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
 /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
 /Users/patrick/coding/webassembly/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -D__EMSCRIPTEN_SHARED_MEMORY__=1 -D__EMSCRIPTEN_WASM_WORKERS__=1 -DEMSCRIPTEN -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -matomics -mbulk-memory web_audio_worklet.cpp -c -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/web_audio_worklet_3.o
clang version 19.0.0git (https:/github.com/llvm/llvm-project 7cfffe74eeb68fbb3fb9706ac7071f8caeeb6520)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/patrick/coding/webassembly/emsdk/upstream/bin
 (in-process)
 "/Users/patrick/coding/webassembly/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name web_audio_worklet.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -v -fcoverage-compilation-dir=/Users/patrick/coding/webassembly/tms5220 -resource-dir /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19 -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D __EMSCRIPTEN_WASM_WORKERS__=1 -D EMSCRIPTEN -isysroot /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include -Werror=implicit-function-declaration -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /var/folders/sv/1ks0jbd12nz_z0g9qwy6t2w00000gn/T/emscripten_temp_2xy0ibm_/web_audio_worklet_3.o -x c++ web_audio_worklet.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-apple-darwin21.5.0
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
 /Users/patrick/coding/webassembly/emsdk/upstream/lib/clang/19/include
 /Users/patrick/coding/webassembly/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
 /Users/patrick/coding/webassembly/emsdk/upstream/bin/clang --version
Traceback (most recent call last):
  File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/emcc.py", line 1602, in <module>
    sys.exit(main(sys.argv))
             ^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 81, in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/emcc.py", line 1595, in main
    ret = run(args)
          ^^^^^^^^^
  File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/emcc.py", line 660, in run
    return link.run(linker_inputs, options, state, newargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/link.py", line 3065, in run
    phase_calculate_system_libraries(linker_arguments, newargs)
  File "/opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 81, in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/link.py", line 1828, in phase_calculate_system_libraries
    extra_files_to_link += system_libs.calculate(newargs)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/system_libs.py", line 2398, in calculate
    libs_to_link = get_libs_to_link(args)
                   ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/system_libs.py", line 2380, in get_libs_to_link
    add_library('libwasm_workers')
  File "/Users/patrick/coding/webassembly/emsdk/upstream/emscripten/tools/system_libs.py", line 2269, in add_library
    lib = system_libs_map[libname]
          ~~~~~~~~~~~~~~~^^^^^^^^^
KeyError: 'libwasm_workers'
make: *** [build] Error 1
Note:  Where possible, please avoid attaching screen shots of code or console
logs.  Instead, please include them as text so that they may be copied /
searched.  To make code blocks more readable and syntax highlighted, please
escape them with three backticks before and after, like this:
@sbc100
Copy link
Collaborator

sbc100 commented Jul 2, 2024

It looks like that combination of flags is not allowed:

#if SINGLE_FILE
#error "-sSINGLE_FILE is not supported with -sWASM_WORKERS!"
#endif

However, the compiler should not crash so we should fix that.

sbc100 added a commit to sbc100/emscripten that referenced this issue Jul 2, 2024
@sbc100 sbc100 linked a pull request Jul 2, 2024 that will close this issue
sbc100 added a commit to sbc100/emscripten that referenced this issue Jul 2, 2024
sbc100 added a commit to sbc100/emscripten that referenced this issue Jul 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants