@volter/browser-wali 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -0
- package/dist/browser-wali-command.d.ts +3 -0
- package/dist/browser-wali-command.d.ts.map +1 -1
- package/dist/browser-wali-command.js +2 -1
- package/dist/browser-wali-command.js.map +1 -1
- package/dist/capabilities.d.ts +73 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +86 -2
- package/dist/capabilities.js.map +1 -1
- package/dist/child-processes.d.ts +24 -0
- package/dist/child-processes.d.ts.map +1 -0
- package/dist/child-processes.js +134 -0
- package/dist/child-processes.js.map +1 -0
- package/dist/codec-protocol.d.ts +66 -0
- package/dist/codec-protocol.d.ts.map +1 -0
- package/dist/codec-protocol.js +59 -0
- package/dist/codec-protocol.js.map +1 -0
- package/dist/codec-remote.d.ts +33 -0
- package/dist/codec-remote.d.ts.map +1 -0
- package/dist/codec-remote.js +190 -0
- package/dist/codec-remote.js.map +1 -0
- package/dist/codec-worker.d.ts +2 -0
- package/dist/codec-worker.d.ts.map +1 -0
- package/dist/codec-worker.js +438 -0
- package/dist/codec-worker.js.map +1 -0
- package/dist/coherent-file-locks.d.ts.map +1 -1
- package/dist/coherent-file-locks.js +17 -5
- package/dist/coherent-file-locks.js.map +1 -1
- package/dist/descriptors.d.ts +49 -0
- package/dist/descriptors.d.ts.map +1 -0
- package/dist/descriptors.js +115 -0
- package/dist/descriptors.js.map +1 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +2 -2
- package/dist/events.js.map +1 -1
- package/dist/filesystem-protocol.d.ts +28 -1
- package/dist/filesystem-protocol.d.ts.map +1 -1
- package/dist/filesystem-protocol.js +18 -0
- package/dist/filesystem-protocol.js.map +1 -1
- package/dist/filesystem-remote.d.ts +26 -2
- package/dist/filesystem-remote.d.ts.map +1 -1
- package/dist/filesystem-remote.js +132 -23
- package/dist/filesystem-remote.js.map +1 -1
- package/dist/filesystem-worker.js +274 -34
- package/dist/filesystem-worker.js.map +1 -1
- package/dist/filesystem.d.ts +30 -1
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +180 -50
- package/dist/filesystem.js.map +1 -1
- package/dist/fork-worker.d.ts +2 -0
- package/dist/fork-worker.d.ts.map +1 -0
- package/dist/fork-worker.js +52 -0
- package/dist/fork-worker.js.map +1 -0
- package/dist/host.d.ts +36 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +153 -0
- package/dist/host.js.map +1 -0
- package/dist/loopback-host.d.ts +25 -1
- package/dist/loopback-host.d.ts.map +1 -1
- package/dist/loopback-host.js +447 -13
- package/dist/loopback-host.js.map +1 -1
- package/dist/memory.d.ts +65 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +306 -49
- package/dist/memory.js.map +1 -1
- package/dist/module-layout.d.ts +2 -0
- package/dist/module-layout.d.ts.map +1 -1
- package/dist/module-layout.js +4 -2
- package/dist/module-layout.js.map +1 -1
- package/dist/monotonic-clock.d.ts +12 -0
- package/dist/monotonic-clock.d.ts.map +1 -0
- package/dist/monotonic-clock.js +14 -0
- package/dist/monotonic-clock.js.map +1 -0
- package/dist/network-protocol.d.ts +12 -1
- package/dist/network-protocol.d.ts.map +1 -1
- package/dist/network-protocol.js +6 -0
- package/dist/network-protocol.js.map +1 -1
- package/dist/network-worker.js +149 -20
- package/dist/network-worker.js.map +1 -1
- package/dist/network.d.ts +15 -3
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +74 -39
- package/dist/network.js.map +1 -1
- package/dist/process-adapter.d.ts +4 -1
- package/dist/process-adapter.d.ts.map +1 -1
- package/dist/process-adapter.js +3 -3
- package/dist/process-adapter.js.map +1 -1
- package/dist/process-bridge.d.ts +43 -0
- package/dist/process-bridge.d.ts.map +1 -1
- package/dist/process-bridge.js +30 -1
- package/dist/process-bridge.js.map +1 -1
- package/dist/program.d.ts +60 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +92 -31
- package/dist/program.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +491 -134
- package/dist/runtime.js.map +1 -1
- package/dist/select.d.ts +16 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +100 -0
- package/dist/select.js.map +1 -0
- package/dist/shared-pipes.d.ts +17 -6
- package/dist/shared-pipes.d.ts.map +1 -1
- package/dist/shared-pipes.js +94 -70
- package/dist/shared-pipes.js.map +1 -1
- package/dist/signals.d.ts +48 -0
- package/dist/signals.d.ts.map +1 -0
- package/dist/signals.js +232 -0
- package/dist/signals.js.map +1 -0
- package/dist/snapshot-filesystem.d.ts +128 -2
- package/dist/snapshot-filesystem.d.ts.map +1 -1
- package/dist/snapshot-filesystem.js +481 -53
- package/dist/snapshot-filesystem.js.map +1 -1
- package/dist/spawn-policy.d.ts +5 -0
- package/dist/spawn-policy.d.ts.map +1 -0
- package/dist/spawn-policy.js +29 -0
- package/dist/spawn-policy.js.map +1 -0
- package/dist/stdin.d.ts +2 -0
- package/dist/stdin.d.ts.map +1 -1
- package/dist/stdin.js +4 -0
- package/dist/stdin.js.map +1 -1
- package/dist/symlink.d.ts +8 -0
- package/dist/symlink.d.ts.map +1 -1
- package/dist/symlink.js +13 -0
- package/dist/symlink.js.map +1 -1
- package/dist/system.d.ts +152 -1
- package/dist/system.d.ts.map +1 -1
- package/dist/system.js +226 -7
- package/dist/system.js.map +1 -1
- package/dist/thread-coordinator-worker.d.ts +1 -0
- package/dist/thread-coordinator-worker.d.ts.map +1 -1
- package/dist/thread-coordinator-worker.js +1 -0
- package/dist/thread-coordinator-worker.js.map +1 -1
- package/dist/thread-worker.js +241 -122
- package/dist/thread-worker.js.map +1 -1
- package/dist/threads.d.ts +12 -2
- package/dist/threads.d.ts.map +1 -1
- package/dist/threads.js +30 -10
- package/dist/threads.js.map +1 -1
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/websocket-peer.d.ts.map +1 -1
- package/dist/websocket-peer.js +4 -14
- package/dist/websocket-peer.js.map +1 -1
- package/dist/worker-program-protocol.d.ts +70 -3
- package/dist/worker-program-protocol.d.ts.map +1 -1
- package/dist/worker-program-worker.js +115 -23
- package/dist/worker-program-worker.js.map +1 -1
- package/dist/worker-program.d.ts +25 -1
- package/dist/worker-program.d.ts.map +1 -1
- package/dist/worker-program.js +470 -61
- package/dist/worker-program.js.map +1 -1
- package/dist/worker-standby.d.ts +3 -0
- package/dist/worker-standby.d.ts.map +1 -0
- package/dist/worker-standby.js +17 -0
- package/dist/worker-standby.js.map +1 -0
- package/package.json +21 -7
package/dist/system.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { monotonicMilliseconds } from "./monotonic-clock.js";
|
|
1
2
|
const EAGAIN = 11n;
|
|
2
3
|
const ESRCH = 3n;
|
|
3
4
|
const EINVAL = 22n;
|
|
@@ -5,7 +6,11 @@ const ETIMEDOUT = 110n;
|
|
|
5
6
|
const FUTEX_COMMAND_MASK = 0x7f;
|
|
6
7
|
const FUTEX_CLOCK_REALTIME = 0x100;
|
|
7
8
|
const FUTEX_WAIT = 0;
|
|
9
|
+
const FUTEX_WAKE = 1;
|
|
10
|
+
const FUTEX_REQUEUE = 3;
|
|
11
|
+
const FUTEX_CMP_REQUEUE = 4;
|
|
8
12
|
const FUTEX_WAIT_BITSET = 9;
|
|
13
|
+
const FUTEX_WAKE_BITSET = 10;
|
|
9
14
|
const encoder = new TextEncoder();
|
|
10
15
|
/** Process-wide exit requested by a WALI pthread through exit_group(2). */
|
|
11
16
|
export class WaliPthreadProcessExit extends Error {
|
|
@@ -16,11 +21,101 @@ export class WaliPthreadProcessExit extends Error {
|
|
|
16
21
|
this.name = "WaliPthreadProcessExit";
|
|
17
22
|
}
|
|
18
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* A native program took an error path that needs longjmp. WALI's musl makes
|
|
26
|
+
* setjmp and longjmp host imports because wasm cannot save or restore a
|
|
27
|
+
* stack, and the tab cannot unwind one either.
|
|
28
|
+
*/
|
|
29
|
+
export class WaliLongjmpUnsupported extends Error {
|
|
30
|
+
value;
|
|
31
|
+
constructor(value) {
|
|
32
|
+
super(`longjmp(${value}) is not supported in the tab: the program took an internal error path it cannot recover from here.`);
|
|
33
|
+
this.value = value;
|
|
34
|
+
this.name = "WaliLongjmpUnsupported";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* FUTEX_REQUEUE and FUTEX_CMP_REQUEUE, for both futex implementations in this
|
|
39
|
+
* package: the process's root thread (below) and each pthread worker
|
|
40
|
+
* (thread-worker.ts). They share this function because they are answering the
|
|
41
|
+
* same kernel contract, and the defect it fixes was invisible for exactly as
|
|
42
|
+
* long as the contract was only half-written.
|
|
43
|
+
*
|
|
44
|
+
* THE OPERATION IS NOT OPTIONAL, and answering ENOSYS is not a degraded mode.
|
|
45
|
+
* musl chain-wakes the waiters a `pthread_cond_broadcast` released: the woken
|
|
46
|
+
* waiter hands the next one along with `unlock_requeue`, which is
|
|
47
|
+
* (wali-musl/src/thread/pthread_cond_timedwait.c:48-54)
|
|
48
|
+
*
|
|
49
|
+
* static inline void unlock_requeue(volatile int *l, volatile int *r, int w)
|
|
50
|
+
* {
|
|
51
|
+
* a_store(l, 0);
|
|
52
|
+
* if (w) __wake(l, 1, 1);
|
|
53
|
+
* else __syscall_SYS_futex(l, FUTEX_REQUEUE|FUTEX_PRIVATE, 0, 1, r, 0) != -ENOSYS
|
|
54
|
+
* || __syscall_SYS_futex(l, FUTEX_REQUEUE, 0, 1, r, 0);
|
|
55
|
+
* }
|
|
56
|
+
*
|
|
57
|
+
* — it returns void and DISCARDS both results, so an unimplemented requeue is
|
|
58
|
+
* reported to nobody. `a_store(l, 0)` does not wake a parked waiter on Linux
|
|
59
|
+
* either; the requeue is the entire wake mechanism. With it missing, the
|
|
60
|
+
* second and every later waiter of any broadcast on an ordinary mutex stays
|
|
61
|
+
* parked forever. Measured 2026-09-18 on wasm32-wali-linux-musl: a waiter
|
|
62
|
+
* parked on the barrier word, `FUTEX_REQUEUE` answered `errno 38 (Function
|
|
63
|
+
* not implemented)`, and the waiter was still parked three seconds later.
|
|
64
|
+
*
|
|
65
|
+
* WHAT THIS IS NOT, recorded because this function was written while chasing
|
|
66
|
+
* it and the wrong story is the easy one to re-derive: it is NOT the cause of
|
|
67
|
+
* Blender's Cycles render aborting in `ccl::Session::wait()`. That abort
|
|
68
|
+
* reaches `std::terminate` through libc++'s `condition_variable::wait`, which
|
|
69
|
+
* is `noexcept` and so fails silently, and the obvious reading is that the
|
|
70
|
+
* runtime returned an error from a futex. It did not: nothing asks for a
|
|
71
|
+
* requeue on that path, and no syscall in those runs returns an error. The
|
|
72
|
+
* requeue defect above is real, was found on the way, and is fixed on its own
|
|
73
|
+
* evidence; it is a different defect.
|
|
74
|
+
*
|
|
75
|
+
* WHAT THE CYCLES ABORT ACTUALLY IS, because the reading that replaced this
|
|
76
|
+
* one was wrong too and the next reader deserves the end of the story. A
|
|
77
|
+
* Cycles BVH worker frees a pointer musl's mallocng refuses (`a_crash` in
|
|
78
|
+
* `get_meta`, under `ccl::BVHBuild::create_leaf_node`, deterministic at
|
|
79
|
+
* `-t 1`); `throwIfPthreadFailed` below then THROWS out of the main thread's
|
|
80
|
+
* parked `SYS_futex`, and the `noexcept` `condition_variable::wait` frame
|
|
81
|
+
* turns that foreign exception into `std::terminate`. The main thread's stack
|
|
82
|
+
* is a consequence; the free is the defect and it is not in this package.
|
|
83
|
+
* `programs/blender/5.2.0/README.md` carries the measurement, including the
|
|
84
|
+
* `--debug-memory` run in which the same command renders the frame and writes
|
|
85
|
+
* a real PNG.
|
|
86
|
+
*
|
|
87
|
+
* It was NOT the `!lk.owns_lock()` branch, which this file said for one
|
|
88
|
+
* commit. That rested on there being no `SYS_futex` in "the captured trace",
|
|
89
|
+
* and the trace in a trap payload is `threadPool.diagnostics(fatalSlot)` --
|
|
90
|
+
* the window of the thread that DIED, never the main thread's.
|
|
91
|
+
*
|
|
92
|
+
* WHAT THIS DOES INSTEAD OF REQUEUEING. `Atomics.wait` parks an agent on one
|
|
93
|
+
* word and there is no operation that moves it to another, so the waiters that
|
|
94
|
+
* Linux would have moved to `address2` are WOKEN on `address` instead. That is
|
|
95
|
+
* sound rather than approximate: every futex waiter re-tests its own predicate
|
|
96
|
+
* in a loop after the call returns (musl's `__wait` is literally
|
|
97
|
+
* `while (*addr==val) __syscall(SYS_futex, ...)`), so a woken waiter contends
|
|
98
|
+
* for `address2`'s lock through its normal path instead of being parked on it.
|
|
99
|
+
* The cost is a thundering herd under contention, never a wrong answer. The
|
|
100
|
+
* return value is the number actually woken, which is what Linux reports for
|
|
101
|
+
* FUTEX_REQUEUE.
|
|
102
|
+
*
|
|
103
|
+
* `address2` is validated but not otherwise used: naming it is how a caller
|
|
104
|
+
* that passes a bad pointer still gets EINVAL rather than silence.
|
|
105
|
+
*/
|
|
106
|
+
export function futexRequeue(words, index, command, wakeCount, requeueCount, compareValue) {
|
|
107
|
+
if (command === FUTEX_CMP_REQUEUE && Atomics.load(words, index) !== compareValue)
|
|
108
|
+
return -EAGAIN;
|
|
109
|
+
const total = Math.max(0, wakeCount) + Math.max(0, requeueCount);
|
|
110
|
+
return BigInt(Atomics.notify(words, index, total));
|
|
111
|
+
}
|
|
19
112
|
export class WaliSystemHost {
|
|
20
113
|
memory;
|
|
21
114
|
pid;
|
|
22
115
|
terminal;
|
|
23
116
|
pthreadFatal;
|
|
117
|
+
terminalAttached;
|
|
118
|
+
threadPoolSize;
|
|
24
119
|
limits = new Map();
|
|
25
120
|
signalMask = new Uint8Array(8);
|
|
26
121
|
alternateSignalStack = new Uint8Array(12);
|
|
@@ -28,14 +123,29 @@ export class WaliSystemHost {
|
|
|
28
123
|
sleepWord = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
|
|
29
124
|
termios = new Uint8Array(36);
|
|
30
125
|
termios2 = new Uint8Array(44);
|
|
31
|
-
constructor(memory, pid, terminal, pthreadFatal
|
|
126
|
+
constructor(memory, pid, terminal, pthreadFatal, terminalAttached = false,
|
|
127
|
+
/**
|
|
128
|
+
* How many pthread workers this process was given. It is the ceiling on
|
|
129
|
+
* threads that can run at once here, so it is also the ceiling on the CPU
|
|
130
|
+
* count the process may be told about. See schedGetAffinity.
|
|
131
|
+
*/
|
|
132
|
+
threadPoolSize = 1) {
|
|
32
133
|
this.memory = memory;
|
|
33
134
|
this.pid = pid;
|
|
34
135
|
this.terminal = terminal;
|
|
35
136
|
this.pthreadFatal = pthreadFatal;
|
|
137
|
+
this.terminalAttached = terminalAttached;
|
|
138
|
+
this.threadPoolSize = threadPoolSize;
|
|
36
139
|
}
|
|
37
140
|
imports() {
|
|
38
141
|
return {
|
|
142
|
+
// setjmp records nothing and answers 0, "no longjmp has happened", as an
|
|
143
|
+
// i32 (it is C `int`, not a syscall's `long long`). longjmp is fatal by
|
|
144
|
+
// name. libvpx, libaom and freetype only longjmp on internal error
|
|
145
|
+
// paths, so a program runs until it would have reported an internal
|
|
146
|
+
// error and then stops instead of recovering.
|
|
147
|
+
setjmp: () => 0,
|
|
148
|
+
longjmp: (_environment, value) => { throw new WaliLongjmpUnsupported(Number(value)); },
|
|
39
149
|
SYS_sched_getaffinity: (pid, size, mask) => this.schedGetAffinity(Number(pid), Number(size), Number(mask)),
|
|
40
150
|
SYS_rt_sigprocmask: (_how, set, previous, size) => this.signalMaskCall(Number(set), Number(previous), Number(size)),
|
|
41
151
|
SYS_sigaltstack: (stack, previous) => this.signalStack(Number(stack), Number(previous)),
|
|
@@ -51,7 +161,11 @@ export class WaliSystemHost {
|
|
|
51
161
|
SYS_ioctl: (fd, request, argument) => this.ioctl(Number(fd), Number(request), Number(argument)),
|
|
52
162
|
SYS_umask: (mask) => this.umask(Number(mask)),
|
|
53
163
|
SYS_set_robust_list: () => 0n,
|
|
54
|
-
|
|
164
|
+
// The 4th, 5th and 6th arguments are the kernel's `timeout`, `uaddr2`
|
|
165
|
+
// and `val3`. FUTEX_WAIT reads the 4th as a timespec pointer;
|
|
166
|
+
// FUTEX_REQUEUE reads the same slot as a COUNT and needs the other two,
|
|
167
|
+
// which is why all six are forwarded and named at the callee.
|
|
168
|
+
SYS_futex: (address, operation, value, timeout, address2, value3) => this.futex(Number(address), Number(operation), Number(value), Number(timeout), Number(address2 ?? 0n), Number(value3 ?? 0n)),
|
|
55
169
|
};
|
|
56
170
|
}
|
|
57
171
|
bytes() { return new Uint8Array(this.memory().buffer); }
|
|
@@ -62,6 +176,45 @@ export class WaliSystemHost {
|
|
|
62
176
|
throw new WebAssembly.RuntimeError(`WALI memory access is out of bounds: ${pointer}+${length}.`);
|
|
63
177
|
}
|
|
64
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* The CPU set this process may run on, and it decides how parallel every
|
|
181
|
+
* library in the guest makes itself: glibc and musl answer
|
|
182
|
+
* `sysconf(_SC_NPROCESSORS_ONLN)` from it, `std::thread::hardware_concurrency`
|
|
183
|
+
* and Rust's `available_parallelism` read it, and so do oneTBB's
|
|
184
|
+
* `AvailableHwConcurrency` and Blender's `BLI_system_thread_count`.
|
|
185
|
+
*
|
|
186
|
+
* It used to write a literal `1` into the mask. That was not a placeholder
|
|
187
|
+
* with no consequence: an unconfigured oneTBB IS SERIAL at one CPU however
|
|
188
|
+
* many threads the host actually runs (`governor::default_num_threads`), so
|
|
189
|
+
* every library that sizes itself this way ran single-threaded in a runtime
|
|
190
|
+
* that had a whole pool of workers idle. Measured by the deps lane and
|
|
191
|
+
* recorded in `programs/blender/deps/tbb.sh`.
|
|
192
|
+
*
|
|
193
|
+
* TWO CEILINGS, and the answer is the lower:
|
|
194
|
+
* - the host's own logical cores (`navigator.hardwareConcurrency`), because
|
|
195
|
+
* claiming more parallelism than the machine has only makes a guest
|
|
196
|
+
* oversubscribe;
|
|
197
|
+
* - this process's pthread WORKER POOL, because that is a hard cap on
|
|
198
|
+
* threads that can run at once. Answering above it guarantees that a
|
|
199
|
+
* guest sizing a pool from this number exhausts the workers.
|
|
200
|
+
*
|
|
201
|
+
* WHAT THIS DOES NOT PROMISE, said here because the next reader will be
|
|
202
|
+
* holding a program that ran out of threads: the pool is the whole thread
|
|
203
|
+
* budget, not a compute budget. A guest that starts N compute threads
|
|
204
|
+
* generally starts several more besides (measured on Blender: `-t 4` against
|
|
205
|
+
* a host pool of 4 traps), so a program whose declared `requirements.workers`
|
|
206
|
+
* equals the parallelism it wants has no headroom. That number is the
|
|
207
|
+
* program's own to size in its `browser-program.json`; this function only
|
|
208
|
+
* refuses to promise more than the pool can hold.
|
|
209
|
+
*/
|
|
210
|
+
/**
|
|
211
|
+
* The cpu count this process reports, and THE ONE PLACE the formula lives.
|
|
212
|
+
* `runtime.ts` quotes it in the pool-exhaustion notice; a second copy of
|
|
213
|
+
* `Math.min(cores, pool)` somewhere else is how the notice starts lying.
|
|
214
|
+
*/
|
|
215
|
+
reportedCpuCount() {
|
|
216
|
+
return Math.min(availableCpus(), Math.max(1, this.threadPoolSize));
|
|
217
|
+
}
|
|
65
218
|
schedGetAffinity(pid, size, pointer) {
|
|
66
219
|
if (pid !== 0 && pid !== this.pid)
|
|
67
220
|
return -ESRCH;
|
|
@@ -69,7 +222,14 @@ export class WaliSystemHost {
|
|
|
69
222
|
return -EINVAL;
|
|
70
223
|
this.range(pointer, size);
|
|
71
224
|
this.bytes().fill(0, pointer, pointer + size);
|
|
72
|
-
this.
|
|
225
|
+
const cpus = Math.min(this.reportedCpuCount(), size * 8);
|
|
226
|
+
// The region was just zeroed, so each byte is written whole rather than
|
|
227
|
+
// read-modified: the low `cpus` bits set, little end first, as Linux packs
|
|
228
|
+
// a cpu_set_t.
|
|
229
|
+
const mask = this.bytes();
|
|
230
|
+
for (let byte = 0; byte * 8 < cpus; byte += 1) {
|
|
231
|
+
mask[pointer + byte] = (1 << Math.min(8, cpus - byte * 8)) - 1;
|
|
232
|
+
}
|
|
73
233
|
return BigInt(Math.min(size, 8));
|
|
74
234
|
}
|
|
75
235
|
signalMaskCall(set, previous, size) {
|
|
@@ -116,7 +276,7 @@ export class WaliSystemHost {
|
|
|
116
276
|
return -EINVAL;
|
|
117
277
|
let duration = Number(seconds * 1000n + nanoseconds / 1000000n);
|
|
118
278
|
if (flags & 1) {
|
|
119
|
-
const now = clock === 0 ? Date.now() :
|
|
279
|
+
const now = clock === 0 ? Date.now() : monotonicMilliseconds();
|
|
120
280
|
duration = Math.max(0, duration - now);
|
|
121
281
|
}
|
|
122
282
|
try {
|
|
@@ -205,6 +365,10 @@ export class WaliSystemHost {
|
|
|
205
365
|
if (fd < 0 || fd > 2)
|
|
206
366
|
return -9n;
|
|
207
367
|
const operation = request >>> 0;
|
|
368
|
+
// FIONREAD applies to input streams too. Terminal queries must fail for
|
|
369
|
+
// headless stdio, even when its shared input buffer carries default sizes.
|
|
370
|
+
if (operation !== 0x541b && !this.terminalAttached)
|
|
371
|
+
return -25n;
|
|
208
372
|
if (operation === 0x5413) {
|
|
209
373
|
this.range(argument, 8);
|
|
210
374
|
const size = this.terminal?.terminalSize?.() ?? { rows: 24, columns: 80 };
|
|
@@ -245,15 +409,28 @@ export class WaliSystemHost {
|
|
|
245
409
|
this.fileCreationMask = mask & 0o777;
|
|
246
410
|
return BigInt(previous);
|
|
247
411
|
}
|
|
248
|
-
futex(address, operation, value, timeoutPointer) {
|
|
412
|
+
futex(address, operation, value, timeoutPointer, address2 = 0, value3 = 0) {
|
|
249
413
|
if (address % 4 !== 0)
|
|
250
414
|
return -EINVAL;
|
|
251
415
|
this.range(address, 4);
|
|
252
416
|
const words = new Int32Array(this.memory().buffer);
|
|
253
417
|
const index = address / 4;
|
|
254
418
|
const command = operation & FUTEX_COMMAND_MASK;
|
|
255
|
-
if (command ===
|
|
419
|
+
if (command === FUTEX_WAKE || command === FUTEX_WAKE_BITSET) {
|
|
256
420
|
return BigInt(Atomics.notify(words, index, Math.max(0, value)));
|
|
421
|
+
}
|
|
422
|
+
if (command === FUTEX_REQUEUE || command === FUTEX_CMP_REQUEUE) {
|
|
423
|
+
if (address2 % 4 !== 0)
|
|
424
|
+
return -EINVAL;
|
|
425
|
+
this.range(address2, 4);
|
|
426
|
+
// For these two the timeout slot carries `val2`, the requeue count.
|
|
427
|
+
return futexRequeue(words, index, command, value, timeoutPointer, value3);
|
|
428
|
+
}
|
|
429
|
+
// FUTEX_LOCK_PI and friends stay unimplemented ON PURPOSE, and musl reads
|
|
430
|
+
// that answer: pthread_mutexattr_setprotocol probes FUTEX_LOCK_PI and
|
|
431
|
+
// reports ENOTSUP for priority inheritance when it gets ENOSYS, so no
|
|
432
|
+
// mutex here can ever take the PI path. That is an honest refusal, unlike
|
|
433
|
+
// the requeue above, whose caller discards the error.
|
|
257
434
|
if (command !== FUTEX_WAIT && command !== FUTEX_WAIT_BITSET)
|
|
258
435
|
return -38n;
|
|
259
436
|
let timeout;
|
|
@@ -265,7 +442,7 @@ export class WaliSystemHost {
|
|
|
265
442
|
return -EINVAL;
|
|
266
443
|
const milliseconds = Number(seconds * 1000n + nanoseconds / 1000000n);
|
|
267
444
|
timeout = command === FUTEX_WAIT_BITSET
|
|
268
|
-
? Math.max(0, milliseconds - ((operation & FUTEX_CLOCK_REALTIME) !== 0 ? Date.now() :
|
|
445
|
+
? Math.max(0, milliseconds - ((operation & FUTEX_CLOCK_REALTIME) !== 0 ? Date.now() : monotonicMilliseconds()))
|
|
269
446
|
: milliseconds;
|
|
270
447
|
}
|
|
271
448
|
try {
|
|
@@ -290,6 +467,28 @@ export class WaliSystemHost {
|
|
|
290
467
|
return -EAGAIN;
|
|
291
468
|
}
|
|
292
469
|
}
|
|
470
|
+
/**
|
|
471
|
+
* A dead pthread must not leave the rest of the process parked forever, so
|
|
472
|
+
* every wait in this file re-tests it. READ THE SECOND PARAGRAPH BEFORE
|
|
473
|
+
* DIAGNOSING ANY ABORT THAT ENDS IN THIS RUNTIME.
|
|
474
|
+
*
|
|
475
|
+
* IT THROWS, IT DOES NOT RETURN AN ERRNO, and that decides what the guest's
|
|
476
|
+
* stack looks like. The throw leaves a syscall import and unwinds into
|
|
477
|
+
* whatever wasm frame was waiting. If that frame is `noexcept` -- libc++'s
|
|
478
|
+
* `condition_variable::wait` is, and it is where every C++ program in this
|
|
479
|
+
* estate parks -- the frame's terminate landing pad catches the foreign
|
|
480
|
+
* exception and calls `std::terminate` -> `abort` -> `a_crash`. The program
|
|
481
|
+
* then reports `RuntimeError: unreachable` inside a condition variable, with
|
|
482
|
+
* no mention of the thread that actually died, whose own stack is a
|
|
483
|
+
* `console.error` line far earlier in the stream. Blender's Cycles render
|
|
484
|
+
* cost three separate diagnoses to that shape (see the `futexRequeue`
|
|
485
|
+
* docblock above). When an abort surfaces here, look for a
|
|
486
|
+
* `[WALI pthread N] ... error:` line first; the presence of a
|
|
487
|
+
* `WALI pthread diagnostics` block in the trap payload already proves one
|
|
488
|
+
* happened, because `runtime.ts` only attaches it when `pthreadFatal[1]` was
|
|
489
|
+
* set, and the only writer of that slot is the same compare-exchange that
|
|
490
|
+
* sets the word this function reads.
|
|
491
|
+
*/
|
|
293
492
|
throwIfPthreadFailed() {
|
|
294
493
|
const state = this.pthreadFatal ? Atomics.load(this.pthreadFatal, 0) : 0;
|
|
295
494
|
if (state === 2)
|
|
@@ -299,6 +498,26 @@ export class WaliSystemHost {
|
|
|
299
498
|
}
|
|
300
499
|
}
|
|
301
500
|
}
|
|
501
|
+
/**
|
|
502
|
+
* The host's logical core count, or NO CEILING when the host will not say.
|
|
503
|
+
* `navigator.hardwareConcurrency` is the one answer a browser gives and Node
|
|
504
|
+
* exposes the same global, so this is the same number on both surfaces the
|
|
505
|
+
* package runs on and needs no host injection.
|
|
506
|
+
*
|
|
507
|
+
* The unknown case answers MAX_SAFE_INTEGER rather than 1 on purpose, so that
|
|
508
|
+
* the caller's other ceiling -- the worker pool -- decides alone. A
|
|
509
|
+
* privacy-hardened browser withholds this number, and answering 1 there would
|
|
510
|
+
* put back exactly the defect this ceiling exists beside: a whole pool of
|
|
511
|
+
* workers idle while every library that sizes itself from the cpu count runs
|
|
512
|
+
* serial. The pool's workers demonstrably exist; the host's cores are the
|
|
513
|
+
* refinement, and a refinement nobody offers is no ceiling at all.
|
|
514
|
+
*/
|
|
515
|
+
function availableCpus() {
|
|
516
|
+
const reported = typeof navigator === "undefined" ? undefined : navigator.hardwareConcurrency;
|
|
517
|
+
return Number.isSafeInteger(reported) && reported > 0
|
|
518
|
+
? reported
|
|
519
|
+
: Number.MAX_SAFE_INTEGER;
|
|
520
|
+
}
|
|
302
521
|
function performanceNow() {
|
|
303
522
|
return typeof performance === "undefined" ? Date.now() : performance.now();
|
|
304
523
|
}
|
package/dist/system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-coordinator-worker.d.ts","sourceRoot":"","sources":["../src/thread-coordinator-worker.ts"],"names":[],"mappings":"AAAA,UAAU,iBAAiB;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"thread-coordinator-worker.d.ts","sourceRoot":"","sources":["../src/thread-coordinator-worker.ts"],"names":[],"mappings":"AAAA,UAAU,iBAAiB;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,aAAa,GAAG,YAAY,GAAG,eAAe,CAAC;AACpD,KAAK,gBAAgB,GAAG,OAAO,UAAU,GAAG;IAC1C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CACtE,CAAC;AAEF,QAAA,MAAM,KAAK,EAAiB,gBAAgB,CAAC;AAqC7C,iBAAS,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAK9C;AAED,iBAAS,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-coordinator-worker.js","sourceRoot":"","sources":["../src/thread-coordinator-worker.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"thread-coordinator-worker.js","sourceRoot":"","sources":["../src/thread-coordinator-worker.ts"],"names":[],"mappings":";AA0BA,MAAM,KAAK,GAAG,UAA8B,CAAC;AAE7C,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,EAAQ,EAAE;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAkB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAiB,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,GAAG,CAAC,OAAoC,EAAQ,EAAE;gBAC9D,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACrC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBAChD,OAAO;gBACT,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;oBAClB,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;oBACvB,OAAO;gBACT,CAAC;gBACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvC,KAAK,CAAC,SAAS,CAAE,CAAC,WAAW,CAAC;oBAC5B,IAAI,EAAE,OAAO;oBACb,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe;oBAC7C,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe;oBAC7C,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE;oBACzC,GAAG;iBACJ,CAAC,CAAC;gBACH,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACzB,CAAC,CAAC;YACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvH,CAAC;AACH,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,KAAiB;IACpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,QAAoB,EAAE,MAAc;IACnD,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC"}
|