Is winit compatible with emscripten sdk 1.38.22? When running the examples I'm getting this error, interested if anyone else is seeing it, or if it is a misconfiguration on my end:
window.js:7196 missing function: emscripten_set_mousemove_callback
window.js:7196 missing function: emscripten_set_mousemove_callback
_emscripten_set_mousemove_callback @ window.js:7196
__ZN5winit8platform8platform6Window3new17h036fa7310bcbf823E @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN5winit6window38__LT_impl_u20_winit__WindowBuilder_GT_5build17h500b3e62957b8a6fE @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN6window4main17h6c9df911c3ebf060E @ grisu.rs:491
__ZN3std2rt10lang_start28__u7b__u7b_closure_u7d__u7d_17hc3810b9cbdf76d05E @ grisu.rs:491
__ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h45d765e0ad7e854fE @ grisu.rs:491
__ZN3std9panicking3try7do_call17he4712eb84191fb3bE_llvm_369D5A5A @ grisu.rs:491
dynCall_vi @ grisu.rs:491
Module.dynCall_vi @ window.js:7823
invoke_vi @ window.js:7477
___rust_maybe_catch_panic @ grisu.rs:491
__ZN3std2rt19lang_start_internal17h76f990c2b2c74932E @ grisu.rs:491
__ZN3std2rt10lang_start17h018a6e635825245eE @ grisu.rs:491
_main @ grisu.rs:491
Module._main @ window.js:7739
callMain @ window.js:7973
doRun @ window.js:8031
run @ window.js:8045
runCaller @ window.js:7950
removeRunDependency @ window.js:1462
receiveInstance @ window.js:1624
receiveInstantiatedSource @ window.js:1649
Promise.then (async)
doNativeWasm @ window.js:1665
Module.asm @ window.js:1751
(anonymous) @ window.js:7556
window.js:8131 -1
window.js:8132 -1
abort @ window.js:8132
_emscripten_set_mousemove_callback @ window.js:7196
__ZN5winit8platform8platform6Window3new17h036fa7310bcbf823E @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN5winit6window38__LT_impl_u20_winit__WindowBuilder_GT_5build17h500b3e62957b8a6fE @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN6window4main17h6c9df911c3ebf060E @ grisu.rs:491
__ZN3std2rt10lang_start28__u7b__u7b_closure_u7d__u7d_17hc3810b9cbdf76d05E @ grisu.rs:491
__ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h45d765e0ad7e854fE @ grisu.rs:491
__ZN3std9panicking3try7do_call17he4712eb84191fb3bE_llvm_369D5A5A @ grisu.rs:491
dynCall_vi @ grisu.rs:491
Module.dynCall_vi @ window.js:7823
invoke_vi @ window.js:7477
___rust_maybe_catch_panic @ grisu.rs:491
__ZN3std2rt19lang_start_internal17h76f990c2b2c74932E @ grisu.rs:491
__ZN3std2rt10lang_start17h018a6e635825245eE @ grisu.rs:491
_main @ grisu.rs:491
Module._main @ window.js:7739
callMain @ window.js:7973
doRun @ window.js:8031
run @ window.js:8045
runCaller @ window.js:7950
removeRunDependency @ window.js:1462
receiveInstance @ window.js:1624
receiveInstantiatedSource @ window.js:1649
Promise.then (async)
doNativeWasm @ window.js:1665
Module.asm @ window.js:1751
(anonymous) @ window.js:7556
window.js:311 warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling
warnOnce @ window.js:311
demangle @ window.js:1051
(anonymous) @ window.js:1060
demangleAll @ window.js:1058
stackTrace @ window.js:1085
abort @ window.js:8142
_emscripten_set_mousemove_callback @ window.js:7196
__ZN5winit8platform8platform6Window3new17h036fa7310bcbf823E @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN5winit6window38__LT_impl_u20_winit__WindowBuilder_GT_5build17h500b3e62957b8a6fE @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN6window4main17h6c9df911c3ebf060E @ grisu.rs:491
__ZN3std2rt10lang_start28__u7b__u7b_closure_u7d__u7d_17hc3810b9cbdf76d05E @ grisu.rs:491
__ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h45d765e0ad7e854fE @ grisu.rs:491
__ZN3std9panicking3try7do_call17he4712eb84191fb3bE_llvm_369D5A5A @ grisu.rs:491
dynCall_vi @ grisu.rs:491
Module.dynCall_vi @ window.js:7823
invoke_vi @ window.js:7477
___rust_maybe_catch_panic @ grisu.rs:491
__ZN3std2rt19lang_start_internal17h76f990c2b2c74932E @ grisu.rs:491
__ZN3std2rt10lang_start17h018a6e635825245eE @ grisu.rs:491
_main @ grisu.rs:491
Module._main @ window.js:7739
callMain @ window.js:7973
doRun @ window.js:8031
run @ window.js:8045
runCaller @ window.js:7950
removeRunDependency @ window.js:1462
receiveInstance @ window.js:1624
receiveInstantiatedSource @ window.js:1649
Promise.then (async)
doNativeWasm @ window.js:1665
Module.asm @ window.js:1751
(anonymous) @ window.js:7556
window.js:7993 exception thrown: abort(-1) at Error
at jsStackTrace (http://localhost:1235/window.js:1066:13)
at stackTrace (http://localhost:1235/window.js:1083:12)
at abort (http://localhost:1235/window.js:8142:44)
at _emscripten_set_mousemove_callback (http://localhost:1235/window.js:7196:63)
at __ZN5winit8platform8platform6Window3new17h036fa7310bcbf823E (wasm-function[431]:1924)
at dynCall_viii (wasm-function[1281]:17)
at Object.Module.dynCall_viii (http://localhost:1235/window.js:7835:40)
at invoke_viii (http://localhost:1235/window.js:7510:27)
at __ZN5winit6window38__LT_impl_u20_winit__WindowBuilder_GT_5build17h500b3e62957b8a6fE (wasm-function[182]:510)
at dynCall_viii (wasm-function[1281]:17)
To build:
rustup target install wasm32-unknown-emscripten
cargo build --example window --target wasm32-unknown-emscripten
This creates window.js and .wasm in target/wasm32-unknown-emscripten/debug/examples/, to load I added this file test.html in that directory, following the requirements outlined in https://github.com/tomaka/winit#emscripten-and-webassembly:
<!DOCTYPE html>
<head>
<title></title>
</head>
<body>
<canvas id="my_id"></canvas>
<script>
window.Module = { canvas: document.getElementById('my_id') };
</script>
<script src="window.js"></script>
</body>
</html>
then served the files through a simple Python web server:
import SimpleHTTPServer
import SocketServer
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map['.wasm'] = 'application/wasm'
httpd = SocketServer.TCPServer(("", 1234), Handler)
httpd.serve_forever()
visited http://localhost:1234/test.html in Chrome, then I received the window.js:7196 missing function: emscripten_set_mousemove_callback error in the JavaScript debugger.
Searching for this error message finds only one issue: emscripten-core/emscripten#7525 Emscripten 1.38.17+ incompatible with upstream SDL 2.0.8, slightly different situation, that user was able to resolve their problem by rebuilding. However I reinstalled the SDK, cargo clean, cleared out ~/.emscripten_cache, so I'm not sure what else I would need to rebuild?
Next I tried to build on a completely different system (Ubuntu Linux in a VM, first system was macOS 10.14.2) to isolate whether there was a stale misconfiguration with emscripten or something, but with the same emsdk 1.38.22, it failed even earlier, on cargo build --example window --target wasm32-unknown-emscripten compilation:
ubuntu@ubuntu-virtual-machine:~/winit$ cargo build --example window --target wasm32-unknown-emscripten
Compiling libc v0.2.46
Compiling cfg-if v0.1.6
Compiling lazy_static v1.2.0
Compiling log v0.4.6
Compiling winit v0.18.1 (/home/ubuntu/winit)
warning: unused `#[macro_use]` import
--> src/lib.rs:91:1
|
91 | #[macro_use]
| ^^^^^^^^^^^^
|
= note: #[warn(unused_imports)] on by default
warning: method is never used: `interrupt`
--> src/platform/emscripten/mod.rs:106:5
|
106 | pub fn interrupt(&self) {
| ^^^^^^^^^^^^^^^^^^^^^^^
|
= note: #[warn(dead_code)] on by default
warning: unused `std::result::Result` that must be used
--> src/platform/emscripten/mod.rs:637:13
|
637 | self.grab_cursor(false);
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: #[warn(unused_must_use)] on by default
= note: this `Result` may be an `Err` variant, which should be handled
error: linking with `emcc` failed: exit code: 1
|
= note: "emcc" "-s" "DISABLE_EXCEPTION_CATCHING=0" "-L" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.10dxdxrs7zw90t7w.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.112p8kxaw8li07xn.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.1byri58jj3kgrm6p.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.1otiygkv9sqgwlm.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.1qy7jefab5zoyqvw.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.2avkabs4kucwq8k0.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.2j8jzbnkne1fufnk.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.2kb6lcwdsalzswye.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.2mjt5tg33laii3w.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.2ps4sb69egjig53x.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.2ubgkfkdaiumtfvk.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.30zhzew84tqsckiv.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.31nqc83gnwuihsum.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.39gv1tdykhc6zxid.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.3bmxtu9pai4w7bal.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.3hj86efhaywkvxay.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.3l6zmxcgxksruc1h.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.3r73wok95hzuewtd.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.3zftok7e4xm0bfxm.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.43soldk7xly8mcll.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.4e7msdguj4dsq5ee.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.4glgxh4cj2rzjd7c.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.4m8tsdp3ceytssgi.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.4urr3ciozaveezj9.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.59jdz47l3yg11pz6.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.5br8susbkrf0ip7k.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.5fmj62rl3b0862ux.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.6ey0ajfh30a5f4n.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.i0cbfotjaof81bs.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.ktsc5g5kc71n4v4.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.sdh2iyltljzkjto.rcgu.o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.ygq3gmy8sgtwtcq.rcgu.o" "-o" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.js" "-s" "EXPORTED_FUNCTIONS=[\"_main\",\"_rust_eh_personality\"]" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/examples/window-ad7c4d1114999516.y05gmiveyef4hib.rcgu.o" "-O0" "--memory-init-file" "0" "-g4" "-s" "DEFAULT_LIBRARY_FUNCS_TO_INCLUDE=[]" "-L" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/deps" "-L" "/home/ubuntu/winit/target/debug/deps" "-L" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/deps/libwinit-fb1da3298d337e9f.rlib" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/deps/liblog-2cde884c8ec75d89.rlib" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/deps/libcfg_if-47ae4f4904545192.rlib" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/deps/liblibc-66d20d13397431c1.rlib" "/home/ubuntu/winit/target/wasm32-unknown-emscripten/debug/deps/liblazy_static-2f3507fe8c59b581.rlib" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib/libstd-d3c8530a2103c66a.rlib" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib/libpanic_unwind-020f881579077ed2.rlib" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib/libunwind-9d7cbb3306207ed0.rlib" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib/liballoc_system-8883cbfabc444af4.rlib" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib/liblibc-1340b367e717a7b5.rlib" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib/liballoc-18e00c9c4b7e8101.rlib" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib/libcore-41e8ad90a408e7c3.rlib" "/home/ubuntu/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-emscripten/lib/libcompiler_builtins-354cd92321f64700.rlib" "-l" "c" "-s" "BINARYEN=1" "-s" "ERROR_ON_UNDEFINED_SYMBOLS=1"
= note: Traceback (most recent call last):
File "/home/ubuntu/emsdk/emscripten/1.38.22/emcc.py", line 3088, in <module>
sys.exit(run())
File "/home/ubuntu/emsdk/emscripten/1.38.22/emcc.py", line 1642, in run
extra_files_to_link += system_libs.calculate([f for _, f in sorted(temp_files)] + extra_files_to_link, in_temp, stdout_=None, stderr_=None, forced=forced_stdlibs)
File "/home/ubuntu/emsdk/emscripten/1.38.22/tools/system_libs.py", line 550, in calculate
symbolses = shared.Building.parallel_llvm_nm([os.path.abspath(t) for t in temp_files])
File "/home/ubuntu/emsdk/emscripten/1.38.22/tools/shared.py", line 1801, in parallel_llvm_nm
object_contents = pool.map(g_llvm_nm_uncached, files)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 253, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 572, in get
raise self._value
OSError: [Errno 8] Exec format error
error: aborting due to previous error
error: Could not compile `winit`.
To learn more, run the command again with --verbose.
With an earlier emscripten 1.37.12 installation on macOS 10.14.2, I could build but running would fail with yet a different error:
thread 'main' panicked at 'assertion failed: validate_hidpi_factor(dpi_factor)', .cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.18.0/src/dpi.rs:236:9
https://github.com/tomaka/winit/blob/master/src/dpi.rs#L236
#[inline]
pub fn to_physical(&self, dpi_factor: f64) -> PhysicalSize {
assert!(validate_hidpi_factor(dpi_factor));
let width = self.width * dpi_factor;
let height = self.height * dpi_factor;
PhysicalSize::new(width, height)
}
assuming this was an incompatibility fixed in newer emsdk, I updated to 1.38.22, but then hit the error described above. I see #548 "DPI for everyone" changed this code last, but the author couldn't get anything to run in the browser.
Is there a known-working compatible version of emsdk I should use? Any help appreciated
Is winit compatible with emscripten sdk 1.38.22? When running the examples I'm getting this error, interested if anyone else is seeing it, or if it is a misconfiguration on my end:
window.js:7196 missing function: emscripten_set_mousemove_callback
window.js:7196 missing function: emscripten_set_mousemove_callback
_emscripten_set_mousemove_callback @ window.js:7196
__ZN5winit8platform8platform6Window3new17h036fa7310bcbf823E @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN5winit6window38__LT_impl_u20_winit__WindowBuilder_GT_5build17h500b3e62957b8a6fE @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN6window4main17h6c9df911c3ebf060E @ grisu.rs:491
__ZN3std2rt10lang_start28__u7b__u7b_closure_u7d__u7d_17hc3810b9cbdf76d05E @ grisu.rs:491
__ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h45d765e0ad7e854fE @ grisu.rs:491
__ZN3std9panicking3try7do_call17he4712eb84191fb3bE_llvm_369D5A5A @ grisu.rs:491
dynCall_vi @ grisu.rs:491
Module.dynCall_vi @ window.js:7823
invoke_vi @ window.js:7477
___rust_maybe_catch_panic @ grisu.rs:491
__ZN3std2rt19lang_start_internal17h76f990c2b2c74932E @ grisu.rs:491
__ZN3std2rt10lang_start17h018a6e635825245eE @ grisu.rs:491
_main @ grisu.rs:491
Module._main @ window.js:7739
callMain @ window.js:7973
doRun @ window.js:8031
run @ window.js:8045
runCaller @ window.js:7950
removeRunDependency @ window.js:1462
receiveInstance @ window.js:1624
receiveInstantiatedSource @ window.js:1649
Promise.then (async)
doNativeWasm @ window.js:1665
Module.asm @ window.js:1751
(anonymous) @ window.js:7556
window.js:8131 -1
window.js:8132 -1
abort @ window.js:8132
_emscripten_set_mousemove_callback @ window.js:7196
__ZN5winit8platform8platform6Window3new17h036fa7310bcbf823E @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN5winit6window38__LT_impl_u20_winit__WindowBuilder_GT_5build17h500b3e62957b8a6fE @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN6window4main17h6c9df911c3ebf060E @ grisu.rs:491
__ZN3std2rt10lang_start28__u7b__u7b_closure_u7d__u7d_17hc3810b9cbdf76d05E @ grisu.rs:491
__ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h45d765e0ad7e854fE @ grisu.rs:491
__ZN3std9panicking3try7do_call17he4712eb84191fb3bE_llvm_369D5A5A @ grisu.rs:491
dynCall_vi @ grisu.rs:491
Module.dynCall_vi @ window.js:7823
invoke_vi @ window.js:7477
___rust_maybe_catch_panic @ grisu.rs:491
__ZN3std2rt19lang_start_internal17h76f990c2b2c74932E @ grisu.rs:491
__ZN3std2rt10lang_start17h018a6e635825245eE @ grisu.rs:491
_main @ grisu.rs:491
Module._main @ window.js:7739
callMain @ window.js:7973
doRun @ window.js:8031
run @ window.js:8045
runCaller @ window.js:7950
removeRunDependency @ window.js:1462
receiveInstance @ window.js:1624
receiveInstantiatedSource @ window.js:1649
Promise.then (async)
doNativeWasm @ window.js:1665
Module.asm @ window.js:1751
(anonymous) @ window.js:7556
window.js:311 warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling
warnOnce @ window.js:311
demangle @ window.js:1051
(anonymous) @ window.js:1060
demangleAll @ window.js:1058
stackTrace @ window.js:1085
abort @ window.js:8142
_emscripten_set_mousemove_callback @ window.js:7196
__ZN5winit8platform8platform6Window3new17h036fa7310bcbf823E @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN5winit6window38__LT_impl_u20_winit__WindowBuilder_GT_5build17h500b3e62957b8a6fE @ grisu.rs:491
dynCall_viii @ grisu.rs:491
Module.dynCall_viii @ window.js:7835
invoke_viii @ window.js:7510
__ZN6window4main17h6c9df911c3ebf060E @ grisu.rs:491
__ZN3std2rt10lang_start28__u7b__u7b_closure_u7d__u7d_17hc3810b9cbdf76d05E @ grisu.rs:491
__ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h45d765e0ad7e854fE @ grisu.rs:491
__ZN3std9panicking3try7do_call17he4712eb84191fb3bE_llvm_369D5A5A @ grisu.rs:491
dynCall_vi @ grisu.rs:491
Module.dynCall_vi @ window.js:7823
invoke_vi @ window.js:7477
___rust_maybe_catch_panic @ grisu.rs:491
__ZN3std2rt19lang_start_internal17h76f990c2b2c74932E @ grisu.rs:491
__ZN3std2rt10lang_start17h018a6e635825245eE @ grisu.rs:491
_main @ grisu.rs:491
Module._main @ window.js:7739
callMain @ window.js:7973
doRun @ window.js:8031
run @ window.js:8045
runCaller @ window.js:7950
removeRunDependency @ window.js:1462
receiveInstance @ window.js:1624
receiveInstantiatedSource @ window.js:1649
Promise.then (async)
doNativeWasm @ window.js:1665
Module.asm @ window.js:1751
(anonymous) @ window.js:7556
window.js:7993 exception thrown: abort(-1) at Error
at jsStackTrace (http://localhost:1235/window.js:1066:13)
at stackTrace (http://localhost:1235/window.js:1083:12)
at abort (http://localhost:1235/window.js:8142:44)
at _emscripten_set_mousemove_callback (http://localhost:1235/window.js:7196:63)
at __ZN5winit8platform8platform6Window3new17h036fa7310bcbf823E (wasm-function[431]:1924)
at dynCall_viii (wasm-function[1281]:17)
at Object.Module.dynCall_viii (http://localhost:1235/window.js:7835:40)
at invoke_viii (http://localhost:1235/window.js:7510:27)
at __ZN5winit6window38__LT_impl_u20_winit__WindowBuilder_GT_5build17h500b3e62957b8a6fE (wasm-function[182]:510)
at dynCall_viii (wasm-function[1281]:17)
To build:
This creates window.js and .wasm in target/wasm32-unknown-emscripten/debug/examples/, to load I added this file test.html in that directory, following the requirements outlined in https://github.com/tomaka/winit#emscripten-and-webassembly:
then served the files through a simple Python web server:
visited http://localhost:1234/test.html in Chrome, then I received the
window.js:7196 missing function: emscripten_set_mousemove_callbackerror in the JavaScript debugger.Searching for this error message finds only one issue: emscripten-core/emscripten#7525 Emscripten 1.38.17+ incompatible with upstream SDL 2.0.8, slightly different situation, that user was able to resolve their problem by rebuilding. However I reinstalled the SDK,
cargo clean, cleared out ~/.emscripten_cache, so I'm not sure what else I would need to rebuild?Next I tried to build on a completely different system (Ubuntu Linux in a VM, first system was macOS 10.14.2) to isolate whether there was a stale misconfiguration with emscripten or something, but with the same emsdk 1.38.22, it failed even earlier, on
cargo build --example window --target wasm32-unknown-emscriptencompilation:With an earlier emscripten 1.37.12 installation on macOS 10.14.2, I could build but running would fail with yet a different error:
thread 'main' panicked at 'assertion failed: validate_hidpi_factor(dpi_factor)', .cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.18.0/src/dpi.rs:236:9
https://github.com/tomaka/winit/blob/master/src/dpi.rs#L236
assuming this was an incompatibility fixed in newer emsdk, I updated to 1.38.22, but then hit the error described above. I see #548 "DPI for everyone" changed this code last, but the author couldn't get anything to run in the browser.
Is there a known-working compatible version of emsdk I should use? Any help appreciated