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

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

Closed
kxxt opened this issue Jan 26, 2025 · 2 comments
Closed

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

kxxt opened this issue Jan 26, 2025 · 2 comments
Labels
bug Something isn't working v8 wasm

Comments

@kxxt
Copy link

kxxt commented Jan 26, 2025

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
@kxxt kxxt changed the title Node.js 23 wasm regression (reproducer: 389-ds-base) Node.js 23 wasm related error (reproducer: 389-ds-base) Jan 27, 2025
@kxxt
Copy link
Author

kxxt commented Jan 27, 2025

The FAIL case now seems distro specific.

I think the SIGILL case is actually #6

@kxxt kxxt added bug Something isn't working v8 wasm labels Jan 27, 2025
kxxt added a commit to kxxt/archriscv-packages that referenced this issue Jan 27, 2025
- Switch compiler to clang, this workarounds https://archriscv.felixc.at/.status/log.htm?url=logs/389-ds-base/389-ds-base-3.1.1-3.log
  See more details in riscv-forks/electron#7
- Cherry-pick icache flush fix, upstreamed:
  - nodejs/node#56781
  - nodejs/node#56782
- Should still need nocheck
@kxxt
Copy link
Author

kxxt commented Jan 27, 2025

Closing as electron is not affected.

For the archriscv specific issue, switching the compiler to clang solves it. Probably another miscompilation done by gcc. (like https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116057)

@kxxt kxxt closed this as completed Jan 27, 2025
kxxt added a commit to kxxt/archriscv-packages that referenced this issue Jan 27, 2025
- Switch compiler to clang, this workarounds https://archriscv.felixc.at/.status/log.htm?url=logs/389-ds-base/389-ds-base-3.1.1-3.log
  See more details in riscv-forks/electron#7
- Cherry-pick icache flush fix, upstreamed:
  - nodejs/node#56781
  - nodejs/node#56782
- Should still need nocheck
felixonmars pushed a commit to felixonmars/archriscv-packages that referenced this issue Jan 28, 2025
- Switch compiler to clang, this workarounds https://archriscv.felixc.at/.status/log.htm?url=logs/389-ds-base/389-ds-base-3.1.1-3.log
  See more details in riscv-forks/electron#7
- Cherry-pick icache flush fix, upstreamed:
  - nodejs/node#56781
  - nodejs/node#56782
- Should still need nocheck
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working v8 wasm
Projects
None yet
Development

No branches or pull requests

1 participant