Skip to content

Relative path lookups don't work anymore in a directory mounted with IDBFS with emscripten 3.1.74 #23983

@leopatras

Description

@leopatras

The attached program tries to lookup some relative existing pathes with FS.lookupPath() (see in pre.js)
There are 3 directories created

/app
/home
/persist

/app is in MEMFS, the 2 others mounted with IDBFS.
When FS.cwd() is in /home, the lookup for ../app fails.
This did work previously with emscripten 3.1.67, so the attached program runs without errors up to 3.1.73, but raises console.error since 3.1.74 .

Version of emscripten/emsdk:

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 4.0.5 (53b38d0c6f9fce1b62c55a8012bc6477f7a42711)
clang version 21.0.0git (https:/github.com/llvm/llvm-project 553da9634dc4bae215e6c850d2de3186d09f9da5)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/leo/w/github/emsdk/upstream/bin

Full link command and output with -v appended:

emcc -v \
         -O2 \
         --pre-js pre.js \
         -s MAIN_MODULE=1 \
         -s FORCE_FILESYSTEM=1 \
         -s EXPORT_ALL=1 \
         -s ASSERTIONS=1 \
         -s STACK_SIZE=200000 \
         -s SAFE_HEAP \
         -s ASYNCIFY \
         -s ASYNCIFY_STACK_SIZE=200000 \
         -s MAXIMUM_MEMORY=4GB \
         -s STACK_OVERFLOW_CHECK=2 \
         -s EXIT_RUNTIME=1 \
         -s ALLOW_MEMORY_GROWTH=1 \
 -lidbfs.js \
 -lproxyfs.js \
          main.c -o main.html
/Users/leo/w/github/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -fPIC -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot -DEMSCRIPTEN -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -O2 -c main.c -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main_0.o
clang version 21.0.0git (https:/[github.com/llvm/llvm-project](http://github.com/llvm/llvm-project) 553da9634dc4bae215e6c850d2de3186d09f9da5)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/leo/w/github/emsdk/upstream/bin
(in-process)
"/Users/leo/w/github/emsdk/upstream/bin/clang-21" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model pic -pic-level 2 -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +mutable-globals -target-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/Users/leo/w/gwa/test/mountproblem -v -fcoverage-compilation-dir=/Users/leo/w/gwa/test/mountproblem -resource-dir /Users/leo/w/github/emsdk/upstream/lib/clang/21 -D EMSCRIPTEN -isysroot /Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot -I/usr/local/include -internal-isystem /Users/leo/w/github/emsdk/upstream/lib/clang/21/include -internal-isystem /Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include -O2 -ferror-limit 19 -fvisibility=default -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -fcolor-diagnostics -vectorize-loops -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main_0.o -x c main.c
clang -cc1 version 21.0.0git based upon LLVM 21.0.0git default target x86_64-apple-darwin24.3.0
ignoring nonexistent directory "/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include/compat
/Users/leo/w/github/emsdk/upstream/lib/clang/21/include
/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
/Users/leo/w/github/emsdk/upstream/bin/clang --version
/Users/leo/w/github/emsdk/upstream/bin/wasm-ld -o main.wasm --whole-archive /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main_0.o -L/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/pic -L/Users/leo/w/github/emsdk/upstream/emscripten/src/lib -lGL-getprocaddr -lal -lhtml5 -lstubs-debug -lc-debug -ldlmalloc-debug -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets --no-whole-archive -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --export-if-defined=setThrew --export-if-defined=_emscripten_stack_restore --export-if-defined=emscripten_stack_get_current --export-if-defined=calloc --export-if-defined=strerror --export-if-defined=malloc --export-if-defined=free --export-if-defined=_emscripten_stack_alloc --export-if-defined=_emscripten_tempret_get --export-if-defined=_emscripten_tempret_set --export-if-defined=htons --export-if-defined=ntohs --export-if-defined=htonl --export-if-defined=_emscripten_timeout --export-if-defined=emscripten_stack_get_base --export-if-defined=emscripten_stack_get_end --export-if-defined=__cxa_can_catch --export-if-defined=__cxa_increment_exception_refcount --export-if-defined=__cxa_get_exception_ptr --export-if-defined=__cxa_decrement_exception_refcount --export-if-defined=fileno --export-if-defined=emscripten_builtin_memalign --export-if-defined=__dl_seterr --export-if-defined=memcmp --export-if-defined=memcpy --export-if-defined=emscripten_stack_set_limits --export-if-defined=realloc --export-if-defined=__errno_location --export-if-defined=__cxa_demangle /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/tmp7h4taxczlibemscripten_js_symbols.so --import-memory --export-dynamic --export=sbrk --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_set_limits --export=_emscripten_stack_alloc --export=emscripten_get_sbrk_ptr --export=__funcs_on_exit --export=__wasm_call_ctors --export=setThrew --export=_emscripten_stack_restore --export=calloc --export=strerror --export=malloc --export=free --export=_emscripten_tempret_get --export=_emscripten_tempret_set --export=htons --export=ntohs --export=htonl --export=_emscripten_timeout --export=__cxa_can_catch --export=__cxa_increment_exception_refcount --export=__cxa_get_exception_ptr --export=__cxa_decrement_exception_refcount --export=fileno --export=emscripten_builtin_memalign --export=__dl_seterr --export=memcmp --export=memcpy --export=realloc --export=__errno_location --export=__cxa_demangle --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 --export-if-defined=__main_argc_argv --export-if-defined=__wasm_apply_data_relocs --export-if-defined=fflush --experimental-pic --unresolved-symbols=import-dynamic -pie -z stack-size=200000 --max-memory=4294967296 --initial-memory=16777216 --no-entry
/Users/leo/w/github/emsdk/upstream/bin/llvm-objcopy main.wasm main.wasm --remove-section=.debug* --remove-section=producers --remove-section=name
/Users/leo/w/github/emsdk/upstream/bin/wasm-emscripten-finalize --bigint --no-legalize-javascript-ffi --check-stack-overflow main.wasm -o main.wasm --detect-features
/Users/leo/w/github/emsdk/upstream/bin/wasm-emscripten-finalize --bigint --no-legalize-javascript-ffi --check-stack-overflow main.wasm -o main.wasm --detect-features
/Users/leo/tmp/node/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/compiler.mjs -
/Users/leo/w/github/emsdk/upstream/bin/wasm-opt --strip-target-features --safe-heap --post-emscripten -O2 --low-memory-unused --asyncify --pass-arg=asyncify-relocatable --pass-arg=asyncify-asserts --pass-arg=asyncify-propagate-addlist [email protected]_*,env.__asyncjs__*,*.$asyncLoad,*.fd_sync,*.emscripten_promise_await,*.emscripten_async_load_script,*.emscripten_async_wget_data,*._dlopen_js,*.emscripten_idb_load,*.emscripten_idb_store,*.emscripten_idb_delete,*.emscripten_idb_exists,*.emscripten_idb_clear,*.emscripten_idb_load_blob,*.emscripten_idb_store_blob,*.emscripten_sleep,*.emscripten_wget_data,*.emscripten_scan_registers,*.emscripten_lazy_load_code,*._load_secondary_module,*.emscripten_fiber_swap,*.SDL_Delay --zero-filled-memory --pass-arg=directize-initial-contents-immutable main.wasm -o main.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
/Users/leo/w/github/emsdk/upstream/bin/wasm-opt --strip-target-features --safe-heap --post-emscripten -O2 --low-memory-unused --asyncify --pass-arg=asyncify-relocatable --pass-arg=asyncify-asserts --pass-arg=asyncify-propagate-addlist [email protected]_*,env.__asyncjs__*,*.$asyncLoad,*.fd_sync,*.emscripten_promise_await,*.emscripten_async_load_script,*.emscripten_async_wget_data,*._dlopen_js,*.emscripten_idb_load,*.emscripten_idb_store,*.emscripten_idb_delete,*.emscripten_idb_exists,*.emscripten_idb_clear,*.emscripten_idb_load_blob,*.emscripten_idb_store_blob,*.emscripten_sleep,*.emscripten_wget_data,*.emscripten_scan_registers,*.emscripten_lazy_load_code,*._load_secondary_module,*.emscripten_fiber_swap,*.SDL_Delay --zero-filled-memory --pass-arg=directize-initial-contents-immutable main.wasm -o main.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
/Users/leo/tmp/node/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/acorn-optimizer.mjs /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.js unsignPointers -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso1.js
/Users/leo/tmp/node/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/acorn-optimizer.mjs /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.js unsignPointers -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso1.js
/Users/leo/tmp/node/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/acorn-optimizer.mjs /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso1.js safeHeap -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso2.js
/Users/leo/tmp/node/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/acorn-optimizer.mjs /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso1.js safeHeap -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso2.js
/Users/leo/tmp/node/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/acorn-optimizer.mjs /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso2.js --minify-whitespace -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso3.js
/Users/leo/tmp/node/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/acorn-optimizer.mjs /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso2.js --minify-whitespace -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_r00d263m/main.jso3.js
/Users/leo/tmp/node/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/preprocessor.mjs - shell.html
/Users/leo/tmp/node/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/node_modules/.bin/html-minifier-terser main.html -o main.html --collapse-whitespace --remove-comments --remove-tag-whitespace --sort-attributes --sort-class-name --decode-entities --collapse-boolean-attributes --remove-attribute-quotes --remove-redundant-attributes --remove-script-type-attributes --remove-style-link-type-attributes --use-short-doctype --minify-css true --minify-js true

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