Skip to content

Node.js 23 wasm related error (reproducer: 389-ds-base) #7

Closed
@kxxt

Description

@kxxt

Preparation:

git clone https://github.com/389ds/389-ds-base
cd 389-ds-base
git checkout 1417198
cd src/cockpit/389-console
npm install
# Always use esbuild-wasm:
sed 's|\(const useWasm\)|\1 = true; //|' build.js 

Reproduce:

# Using Node.js
node build.js
# Using Electron:
# First, ln -s electron node
# Then prepend electron dir to PATH
# Then run
ELECTRON_RUN_AS_NODE=1 node build.js

Errors from esbuild-wasm on node.js 23:

panic: JavaScript error: Path is a directory: open returned ERR_FS_EISDIR (is a directory) /

goroutine 16 [running]:
syscall/js.Value.Call({{}, 0x7ff800010000000a, 0x812038}, {0x8c09a, 0x4}, {0x9452c0, 0x4, 0x6})
	syscall/js/js.go:389 +0x31
syscall.fsCall({0x8c09a, 0x4}, {0x9afd98, 0x3, 0x3})
	syscall/fs_js.go:519 +0x12
syscall.Open({0x8142d0, 0x1}, 0x0, 0x0)
	syscall/fs_js.go:86 +0x1c
os.openFileNolog({0x8142d0, 0x1}, 0x0, 0x0)
	os/file_unix.go:226 +0x17
os.OpenFile({0x8142d0, 0x1}, 0x0, 0x0)
	os/file.go:326 +0x3
os.Open(...)
	os/file.go:306
github.com/evanw/esbuild/internal/fs.(*realFS).readdir(0x846740, {0x8142d0, 0x1})
	github.com/evanw/esbuild/internal/fs/fs_real.go:346 +0x8
github.com/evanw/esbuild/internal/fs.(*realFS).ReadDirectory(0x846740, {0x8142d0, 0x1})
	github.com/evanw/esbuild/internal/fs/fs_real.go:146 +0x7
github.com/evanw/esbuild/internal/fs.(*zipFS).ReadDirectory(0x810d20, {0x8142d0, 0x1})
	github.com/evanw/esbuild/internal/fs/fs_zip.go:191 +0x10
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoUncached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x1})
	github.com/evanw/esbuild/internal/resolver/resolver.go:1267 +0x12
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoCached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x1})
	github.com/evanw/esbuild/internal/resolver/resolver.go:955 +0x6
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoUncached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x6})
	github.com/evanw/esbuild/internal/resolver/resolver.go:1258 +0xc
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoCached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x6})
	github.com/evanw/esbuild/internal/resolver/resolver.go:955 +0x6
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoUncached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x12})
	github.com/evanw/esbuild/internal/resolver/resolver.go:1258 +0xc
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoCached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x12})
	github.com/evanw/esbuild/internal/resolver/resolver.go:955 +0x6
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoUncached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x16})
	github.com/evanw/esbuild/internal/resolver/resolver.go:1258 +0xc
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoCached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x16})
	github.com/evanw/esbuild/internal/resolver/resolver.go:955 +0x6
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoUncached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x34})
	github.com/evanw/esbuild/internal/resolver/resolver.go:1258 +0xc
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoCached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x34})
	github.com/evanw/esbuild/internal/resolver/resolver.go:955 +0x6
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoUncached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x38})
	github.com/evanw/esbuild/internal/resolver/resolver.go:1258 +0xc
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoCached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x38})
	github.com/evanw/esbuild/internal/resolver/resolver.go:955 +0x6
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoUncached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x40})
	github.com/evanw/esbuild/internal/resolver/resolver.go:1258 +0xc
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoCached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x40})
	github.com/evanw/esbuild/internal/resolver/resolver.go:955 +0x6
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoUncached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x4c})
	github.com/evanw/esbuild/internal/resolver/resolver.go:1258 +0xc
github.com/evanw/esbuild/internal/resolver.resolverQuery.dirInfoCached({0x8fac00, {0x3aa5f0, 0x1, 0x1}, 0x97b590, 0x0, 0x0}, {0x8142d0, 0x4c})
	github.com/evanw/esbuild/internal/resolver/resolver.go:955 +0x6
github.com/evanw/esbuild/internal/resolver.(*resolverQuery).loadModuleSuffixesForSourceDir(0x9b33a0, {0x8142d0, 0x4c})
	github.com/evanw/esbuild/internal/resolver/resolver.go:546 +0x8
github.com/evanw/esbuild/internal/resolver.(*Resolver).Resolve(0x8fac00, {0x8142d0, 0x4c}, {0x813140, 0xe}, 0x0)
	github.com/evanw/esbuild/internal/resolver/resolver.go:483 +0x206
github.com/evanw/esbuild/internal/bundler.RunOnResolvePlugins({0x874370, 0x2, 0x2}, 0x8fac00, {0x8c8fc0, 0x80a780, 0x80a798, 0x810980, 0x4, 0x8c0930}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:871 +0xe
github.com/evanw/esbuild/internal/bundler.(*scanner).addEntryPoints.func1(0x0, {{0x813140, 0xe}, {0x0, 0x0}, 0x1})
	github.com/evanw/esbuild/internal/bundler/bundler.go:1636 +0x8
created by github.com/evanw/esbuild/internal/bundler.(*scanner).addEntryPoints
	github.com/evanw/esbuild/internal/bundler/bundler.go:1629 +0xba

SIGILL case (exit code 1):

/home/kxxt/389-ds-base/src/cockpit/389-console/node_modules/esbuild-wasm/lib/main.js:983
                  reject(new Error(error2));
                         ^

Error: The service was stopped
    at /home/kxxt/389-ds-base/src/cockpit/389-console/node_modules/esbuild-wasm/lib/main.js:983:26
    at responseCallbacks.<computed> (/home/kxxt/389-ds-base/src/cockpit/389-console/node_modules/esbuild-wasm/lib/main.js:612:9)
    at Socket.afterClose (/home/kxxt/389-ds-base/src/cockpit/389-console/node_modules/esbuild-wasm/lib/main.js:603:28)
    at Socket.emit (node:events:519:35)
    at endReadableNT (node:internal/streams/readable:1701:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:90:21)

Tested combinations:

product version v8 version channel status
Electron v30.5.1 12.4.254.20-electron.0 riscv-forks -
Node.js v22.13.0 12.4.254.21 archriscv PASS
Electron v31.4.0 12.6.228.30-electron.0 riscv-forks SIGILL
Electron v32.2.8 12.8.374.38-electron.0 riscv-forks PASS
Node.js v23.1.0 12.9.202.28 archriscv FAIL
Node.js nodejs/node@1263efd 12.9.202.28 Built from source Sometimes SIGILL, Sometimes PASS
Node.js nodejs/node@1263efd with 3 v8 patches backported 12.9.202.28 Built from source Sometimes SIGILL, Sometimes PASS
Electron v33.3.0 13.0.245.20-electron.0 riscv-forks PASS
Electron v34.0.1 13.2.152.27-electron.0 riscv-forks PASS

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingv8wasm

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions