Skip to content

ERROR - [JSC_UNDEFINED_VARIABLE] variable runtimeKeepaliveCounter is undeclared #22783

@eyebrowsoffire

Description

@eyebrowsoffire

I am building with TOT and I believe #22542 is causing a build failure for me:

building:ERROR: /var/folders/s1/hhcrhp756rdbjbgf81qqgd2000xtkc/T/emscripten_temp/skwasm_st.js.pgrow.jso4.js:768:2: ERROR - [JSC_UNDEFINED_VARIABLE] variable runtimeKeepaliveCounter is undeclared

I think the issue is that _emscripten_runtime_keepalive_clear in library.js is still attempting to use runtimeKeepaliveCounter but with the logic introduced in the linked PR, that variable is not part of the deps anymore in my build. We probably either need an explicit chain of deps for that function, or maybe an alternative version of this function that is just a no-op that doesn't use runtimeKeepaliveCounter at all.

I was able to workaround this issue by adding noExitRuntime to INCOMING_MODULE_JS_API

Version of emscripten/emsdk:
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.70-git (b53978e)
clang version 20.0.0git (https:/github.com/llvm/llvm-project 37832d5de2abb425c460375a4054478ce9f948fe)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/bin
Build config: +assertions

Failing link command:

/Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/em++.py -s EXPORT_NAME=skwasm -std=c++20 -lGL -sUSE_WEBGL2=1 -sMAX_WEBGL_VERSION=2 -sOFFSCREENCANVAS_SUPPORT -sALLOW_MEMORY_GROWTH -sALLOW_TABLE_GROWTH -lexports.js -sEXPORTED_FUNCTIONS=[stackAlloc] -sEXPORTED_RUNTIME_METHODS=[addFunction,wasmExports,wasmMemory,stackAlloc] -sSHARED_MEMORY=1 -sINCOMING_MODULE_JS_API=[instantiateWasm] --js-library /Users/jacksongardner/Source/flutter/engine/src/flutter/lib/web_ui/skwasm/library_skwasm_support.js -sPTHREAD_POOL_SIZE=1 -Wno-pthreads-mem-growth --js-library /Users/jacksongardner/Source/flutter/engine/src/flutter/lib/web_ui/skwasm/library_skwasm_multi_threaded.js --closure=1 -Wl,--fatal-warnings -pthread -s WASM=1 -s FORCE_FILESYSTEM=0 -s FILESYSTEM=0 -s NO_EXIT_RUNTIME=1 -s STRICT=1 -s MODULARIZE=1 -s EXPORT_ES6 --emit-symbol-map -Oz -Wl,--gc-sections -flto -o skwasm/skwasm.js -Wl,--start-group @skwasm/skwasm.js.rsp -Wl,--end-group -ldl

Failing closure command:

building:ERROR: /var/folders/s1/hhcrhp756rdbjbgf81qqgd2000xtkc/T/emscripten_temp/skwasm_st.js.pgrow.jso4.js:768:2: ERROR - [JSC_UNDEFINED_VARIABLE] variable runtimeKeepaliveCounter is undeclared
  768|   runtimeKeepaliveCounter = 0;
         ^^^^^^^^^^^^^^^^^^^^^^^

1 error(s), 0 warning(s)

em++: error: closure compiler failed (rc: 1): /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/node/18.20.3_64bit/bin/node --max_old_space_size=8192 /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/node_modules/.bin/google-closure-compiler --compilation_level ADVANCED_OPTIMIZATIONS --language_in ECMASCRIPT_2021 --language_out NO_TRANSPILE --emit_use_strict=false --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/src/closure-externs/closure-externs.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/src/closure-externs/modularize-externs.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/src/closure-externs/node-externs.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/net.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/events.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/repl.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/util.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/dgram.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/vm.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/stream.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/child_process.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/core.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/os.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/readline.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/punycode.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/https.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/domain.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/dns.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/tty.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/querystring.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/path.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/string_decoder.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/cluster.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/zlib.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/url.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/tls.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/process.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/http.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/buffer.js --externs /Users/jacksongardner/Source/flutter/engine/src/flutter/prebuilts/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/fs.js --js /var/folders/s1/hhcrhp756rdbjbgf81qqgd2000xtkc/T/emscripten_temp/skwasm_st.js.pgrow.jso4.js --js_output_file tmph4r95wxb.cc.js the error message may be clearer with -g1 and EMCC_DEBUG=2 set

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions