exoproc-accessors 0.1.0 → 0.6.2
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/LICENSE +21 -235
- package/dist/accessors.d.ts +186 -0
- package/dist/accessors.d.ts.map +1 -0
- package/dist/accessors.js +363 -0
- package/dist/accessors.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +725 -109
- package/dist/index.js.map +1 -1
- package/dist/indirect-nthread-host-accessor.d.ts +127 -0
- package/dist/indirect-nthread-host-accessor.d.ts.map +1 -0
- package/dist/indirect-nthread-host-accessor.js +288 -0
- package/dist/indirect-nthread-host-accessor.js.map +1 -0
- package/dist/middleware-accessor.d.ts +82 -14
- package/dist/middleware-accessor.d.ts.map +1 -1
- package/dist/middleware-accessor.js +336 -108
- package/dist/middleware-accessor.js.map +1 -1
- package/dist/stealth-java.d.ts +21 -0
- package/dist/stealth-java.d.ts.map +1 -0
- package/dist/stealth-java.js +119 -0
- package/dist/stealth-java.js.map +1 -0
- package/package.json +20 -10
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { type IHostAccessor, type IInittableAccessor, type CFunction, type CCallResult } from 'bun-xffi';
|
|
2
|
+
import { NThread, type NThreadOptions } from 'bun-nthread';
|
|
3
|
+
import { HostAccessor, type HostAccessorSession, RacingHostAccessor } from './middleware-accessor.js';
|
|
4
|
+
/**
|
|
5
|
+
* A {@link HostAccessor} whose base "call" mechanism is {@link NThread} (x64
|
|
6
|
+
* thread redirection) instead of `RemoteCallableMemoryAccessor` (a fresh
|
|
7
|
+
* `CreateRemoteThread` per call). This directly replaces the old
|
|
8
|
+
* `IndirectCallableAccessor` + manual `NThread`/`RedirectorHostAccessor`
|
|
9
|
+
* wiring -- it builds the same indirect chain
|
|
10
|
+
* (`IndirectCallRedirectorAccessor` → machineCode pool → memset write →
|
|
11
|
+
* memcmp read → file-transfer R/W → scanner → marshalling) on top of an
|
|
12
|
+
* `NThread`-*like* backend directly.
|
|
13
|
+
*
|
|
14
|
+
* Only the thing that actually executes remote calls changes: no
|
|
15
|
+
* `CreateRemoteThread` at all -- a live thread in the target is redirected,
|
|
16
|
+
* parked at a `jmp $` stub, and driven per call. This also sidesteps a
|
|
17
|
+
* GHA/Wine bug where WinAPI calls (VirtualAlloc, malloc, fopen, ...) executed
|
|
18
|
+
* on a freshly-created thread (local or remote) are unreliable -- see CLAUDE.md.
|
|
19
|
+
*
|
|
20
|
+
* Accepts an already-constructed `NThread`, a `(pid, threadId, options)`
|
|
21
|
+
* triple to build one internally, or a {@link NThreadRaceAccessor} standing
|
|
22
|
+
* in for a not-yet-known winner among every thread of a process (the
|
|
23
|
+
* `idType: 'processAllThreadIds'` support behind `createAccessor` -- see
|
|
24
|
+
* that class's own doc comment):
|
|
25
|
+
*
|
|
26
|
+
* const memory = new IndirectNThreadHostAccessor(pid, tid);
|
|
27
|
+
* const addr = await memory.alloc(64); // VirtualAlloc via redirect
|
|
28
|
+
* await memory.call(SomeFunc, addr); // executed on the thread
|
|
29
|
+
*
|
|
30
|
+
* const race = new NThreadRaceAccessor(pid);
|
|
31
|
+
* const memory = new IndirectNThreadHostAccessor(race); // built once, synchronously
|
|
32
|
+
* await memory.init(); // races, resolves `race` internally
|
|
33
|
+
*
|
|
34
|
+
* With the `(pid, threadId, options)` form, this accessor builds the
|
|
35
|
+
* `NThread`'s `RedirectorHostAccessor` root itself and wires its `target`
|
|
36
|
+
* to `this` -- it owns that object, nothing else could reach it.
|
|
37
|
+
*
|
|
38
|
+
* With the `backend: NThread | NThreadRaceAccessor` form, the backend (and
|
|
39
|
+
* whatever `root` it was constructed with) belongs to the caller. This
|
|
40
|
+
* accessor does not reach into its `root` to rewire it -- if its bootstrap
|
|
41
|
+
* stub calls need to route through this indirect chain (e.g. `root` is a
|
|
42
|
+
* `RedirectorHostAccessor`), the caller sets `root.target = indirect` itself
|
|
43
|
+
* after construction, same as building the chain by hand:
|
|
44
|
+
*
|
|
45
|
+
* const redirector = new RedirectorHostAccessor(pid);
|
|
46
|
+
* const nthread = new NThread(backend, tid, options, redirector);
|
|
47
|
+
* const indirect = new IndirectNThreadHostAccessor(nthread);
|
|
48
|
+
* redirector.target = indirect;
|
|
49
|
+
*/
|
|
50
|
+
export declare class IndirectNThreadHostAccessor extends HostAccessor {
|
|
51
|
+
private readonly nthreadRef;
|
|
52
|
+
private bootstrapRoot;
|
|
53
|
+
/**
|
|
54
|
+
* The real `NThread` this accessor's chain ultimately runs on. When built
|
|
55
|
+
* from a {@link NThreadRaceAccessor} (the `idType: 'processAllThreadIds'`
|
|
56
|
+
* case), that accessor's own `target` (inherited from
|
|
57
|
+
* `RedirectorHostAccessor`) is the winning `NThread` by the time `init()`
|
|
58
|
+
* resolves (see its doc comment), so this drills through to it rather
|
|
59
|
+
* than exposing the race stand-in itself -- callers that reach past the
|
|
60
|
+
* generic `HostAccessor` surface into `NThread`-specific members (e.g.
|
|
61
|
+
* `.savedContext`, `.setContext()`) need the genuine instance.
|
|
62
|
+
*/
|
|
63
|
+
get nthread(): NThread;
|
|
64
|
+
constructor(backend: NThread | NThreadRaceAccessor);
|
|
65
|
+
constructor(pid: number, threadId: number, options?: NThreadOptions);
|
|
66
|
+
protected onInit(): Promise<void>;
|
|
67
|
+
protected onInitSync(): void;
|
|
68
|
+
protected onDeinit(): Promise<void>;
|
|
69
|
+
protected onDeinitSync(): void;
|
|
70
|
+
toJSON(): HostAccessorSession;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Stands in for a not-yet-known `NThread` inside an
|
|
74
|
+
* {@link IndirectNThreadHostAccessor}'s own chain -- pass an instance of
|
|
75
|
+
* this directly as that class's `backend` (its `backend: NThread |
|
|
76
|
+
* NThreadRaceAccessor` constructor form). The whole `IndirectNThreadHostAccessor`
|
|
77
|
+
* chain gets built exactly once, synchronously, right alongside every other
|
|
78
|
+
* `idType`; only the actual thread hijack is deferred to `init()`, same as
|
|
79
|
+
* the rest of this class's own machinery.
|
|
80
|
+
*
|
|
81
|
+
* Extends {@link RacingHostAccessor} and overrides its `onInit()` to
|
|
82
|
+
* actually race (`this.race()`), then sets its own `target` to the winning
|
|
83
|
+
* `NThread` directly -- so every op this class forwards (inherited from
|
|
84
|
+
* `RedirectorHostAccessor`) transparently reaches the winner from then on,
|
|
85
|
+
* with nothing above it (in `IndirectNThreadHostAccessor`'s own chain) ever
|
|
86
|
+
* needing to change.
|
|
87
|
+
*
|
|
88
|
+
* Only initializes the *raw* `NThread` hijack per candidate, not a full
|
|
89
|
+
* `IndirectNThreadHostAccessor` chain -- that chain is built exactly once,
|
|
90
|
+
* around *this* accessor rather than around any particular candidate, so the
|
|
91
|
+
* real extra work beyond landing the hijack (`IndirectCallRedirectorAccessor`,
|
|
92
|
+
* `MachineCodePoolMiddleware`, an msvcrt check, opening a remote temp file for
|
|
93
|
+
* `FileTransferWriteAccessor`, ...) naturally only ever happens once, no
|
|
94
|
+
* matter which candidate wins.
|
|
95
|
+
*
|
|
96
|
+
* Every candidate `NThread` is built with `this` (the single, shared
|
|
97
|
+
* `NThreadRaceAccessor`) as its root directly -- no per-candidate proxy
|
|
98
|
+
* object. That's normally unsafe: `NThread.onInit()`'s bootstrap
|
|
99
|
+
* (`this.root.call(stubs.jumpStub)`, landing the hijack) needs `root.call()`
|
|
100
|
+
* to resolve back to *that exact candidate's* own `call()`, and with N
|
|
101
|
+
* candidates racing concurrently through one shared root, a single mutable
|
|
102
|
+
* `backend`/`target` field can't hold N different answers at once (tried
|
|
103
|
+
* this with a plain shared root first -- every candidate's bootstrap call
|
|
104
|
+
* collided on the same placeholder and threw). The fix is `currentCandidate`
|
|
105
|
+
* above: `startRacer` (below) wraps each candidate's `init()` in
|
|
106
|
+
* `currentCandidate.run(candidate, ...)`, which threads that candidate
|
|
107
|
+
* through its *entire* async continuation (every `await` inside its own
|
|
108
|
+
* `onInit()`) in a context isolated from every other concurrently-racing
|
|
109
|
+
* candidate. `call()` (below), when `target` is still self (race not yet
|
|
110
|
+
* decided), reads `currentCandidate.getStore()` to find out which
|
|
111
|
+
* candidate's own bootstrap call this is and forwards to *its* `call()`
|
|
112
|
+
* directly -- no shared field involved. This keeps the ALS mechanism
|
|
113
|
+
* entirely local to this class (`RacingHostAccessor` itself knows nothing
|
|
114
|
+
* about it, see its doc comment) and needs zero changes to `NThread` --
|
|
115
|
+
* `this.root.call(...)` there is untouched, so root-indirection stays a
|
|
116
|
+
* generic, reusable mechanism, not something hardcoded around racing.
|
|
117
|
+
*/
|
|
118
|
+
export declare class NThreadRaceAccessor extends RacingHostAccessor {
|
|
119
|
+
private readonly aborts;
|
|
120
|
+
constructor(pid: number, nthreadOptions?: NThreadOptions, root?: IHostAccessor);
|
|
121
|
+
protected startRacer(racer: IInittableAccessor): Promise<void>;
|
|
122
|
+
call(func: CFunction, ...args: any[]): Promise<CCallResult>;
|
|
123
|
+
protected releaseLoser(racer: IInittableAccessor, settled: Promise<void>): void;
|
|
124
|
+
protected onInit(): Promise<void>;
|
|
125
|
+
protected onInitSync(): never;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=indirect-nthread-host-accessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indirect-nthread-host-accessor.d.ts","sourceRoot":"","sources":["../src/indirect-nthread-host-accessor.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EAIxB,kBAAkB,EASnB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,2BAA4B,SAAQ,YAAY;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,aAAa,CAAwB;IAE7C;;;;;;;;;OASG;IACH,IAAI,OAAO,IAAI,OAAO,CAIrB;gBAEW,OAAO,EAAE,OAAO,GAAG,mBAAmB;gBACtC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;cA+D1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;cAI7B,UAAU,IAAI,IAAI;cAIZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;cAY/B,YAAY,IAAI,IAAI;IAY9B,MAAM,IAAI,mBAAmB;CAwBvC;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;gBAGvD,GAAG,EAAE,MAAM,EACX,cAAc,GAAE,cAAmB,EACnC,IAAI,CAAC,EAAE,aAAa;cA6CH,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;cAQvD,YAAY,CAC7B,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GACrB,IAAI;cAKkB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;cAK7B,UAAU,IAAI,KAAK;CAGvC"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import { isMiddlewareAccessor, } from 'bun-xffi';
|
|
3
|
+
import { Thread } from 'bun-winapi';
|
|
4
|
+
import { NThread } from 'bun-nthread';
|
|
5
|
+
import { HostAccessor, ThrowingMemoryAccessor, RedirectorHostAccessor, BootstrapHostAccessor, RacingHostAccessor, IndirectCallRedirectorAccessor, MachineCodePoolMiddleware, MemsetWriteAccessor, MemcmpReadAccessor, FileTransferWriteAccessor, FileTransferReadAccessor, ScannerMiddleware, MarshallingCallableAccessor, } from './middleware-accessor.js';
|
|
6
|
+
/**
|
|
7
|
+
* A {@link HostAccessor} whose base "call" mechanism is {@link NThread} (x64
|
|
8
|
+
* thread redirection) instead of `RemoteCallableMemoryAccessor` (a fresh
|
|
9
|
+
* `CreateRemoteThread` per call). This directly replaces the old
|
|
10
|
+
* `IndirectCallableAccessor` + manual `NThread`/`RedirectorHostAccessor`
|
|
11
|
+
* wiring -- it builds the same indirect chain
|
|
12
|
+
* (`IndirectCallRedirectorAccessor` → machineCode pool → memset write →
|
|
13
|
+
* memcmp read → file-transfer R/W → scanner → marshalling) on top of an
|
|
14
|
+
* `NThread`-*like* backend directly.
|
|
15
|
+
*
|
|
16
|
+
* Only the thing that actually executes remote calls changes: no
|
|
17
|
+
* `CreateRemoteThread` at all -- a live thread in the target is redirected,
|
|
18
|
+
* parked at a `jmp $` stub, and driven per call. This also sidesteps a
|
|
19
|
+
* GHA/Wine bug where WinAPI calls (VirtualAlloc, malloc, fopen, ...) executed
|
|
20
|
+
* on a freshly-created thread (local or remote) are unreliable -- see CLAUDE.md.
|
|
21
|
+
*
|
|
22
|
+
* Accepts an already-constructed `NThread`, a `(pid, threadId, options)`
|
|
23
|
+
* triple to build one internally, or a {@link NThreadRaceAccessor} standing
|
|
24
|
+
* in for a not-yet-known winner among every thread of a process (the
|
|
25
|
+
* `idType: 'processAllThreadIds'` support behind `createAccessor` -- see
|
|
26
|
+
* that class's own doc comment):
|
|
27
|
+
*
|
|
28
|
+
* const memory = new IndirectNThreadHostAccessor(pid, tid);
|
|
29
|
+
* const addr = await memory.alloc(64); // VirtualAlloc via redirect
|
|
30
|
+
* await memory.call(SomeFunc, addr); // executed on the thread
|
|
31
|
+
*
|
|
32
|
+
* const race = new NThreadRaceAccessor(pid);
|
|
33
|
+
* const memory = new IndirectNThreadHostAccessor(race); // built once, synchronously
|
|
34
|
+
* await memory.init(); // races, resolves `race` internally
|
|
35
|
+
*
|
|
36
|
+
* With the `(pid, threadId, options)` form, this accessor builds the
|
|
37
|
+
* `NThread`'s `RedirectorHostAccessor` root itself and wires its `target`
|
|
38
|
+
* to `this` -- it owns that object, nothing else could reach it.
|
|
39
|
+
*
|
|
40
|
+
* With the `backend: NThread | NThreadRaceAccessor` form, the backend (and
|
|
41
|
+
* whatever `root` it was constructed with) belongs to the caller. This
|
|
42
|
+
* accessor does not reach into its `root` to rewire it -- if its bootstrap
|
|
43
|
+
* stub calls need to route through this indirect chain (e.g. `root` is a
|
|
44
|
+
* `RedirectorHostAccessor`), the caller sets `root.target = indirect` itself
|
|
45
|
+
* after construction, same as building the chain by hand:
|
|
46
|
+
*
|
|
47
|
+
* const redirector = new RedirectorHostAccessor(pid);
|
|
48
|
+
* const nthread = new NThread(backend, tid, options, redirector);
|
|
49
|
+
* const indirect = new IndirectNThreadHostAccessor(nthread);
|
|
50
|
+
* redirector.target = indirect;
|
|
51
|
+
*/
|
|
52
|
+
export class IndirectNThreadHostAccessor extends HostAccessor {
|
|
53
|
+
nthreadRef;
|
|
54
|
+
bootstrapRoot;
|
|
55
|
+
/**
|
|
56
|
+
* The real `NThread` this accessor's chain ultimately runs on. When built
|
|
57
|
+
* from a {@link NThreadRaceAccessor} (the `idType: 'processAllThreadIds'`
|
|
58
|
+
* case), that accessor's own `target` (inherited from
|
|
59
|
+
* `RedirectorHostAccessor`) is the winning `NThread` by the time `init()`
|
|
60
|
+
* resolves (see its doc comment), so this drills through to it rather
|
|
61
|
+
* than exposing the race stand-in itself -- callers that reach past the
|
|
62
|
+
* generic `HostAccessor` surface into `NThread`-specific members (e.g.
|
|
63
|
+
* `.savedContext`, `.setContext()`) need the genuine instance.
|
|
64
|
+
*/
|
|
65
|
+
get nthread() {
|
|
66
|
+
return this.nthreadRef instanceof NThreadRaceAccessor
|
|
67
|
+
? this.nthreadRef.target
|
|
68
|
+
: this.nthreadRef;
|
|
69
|
+
}
|
|
70
|
+
constructor(backendOrPid, threadId, options = {}) {
|
|
71
|
+
let nthread;
|
|
72
|
+
let nthreadRoot;
|
|
73
|
+
// `typeof ... === 'number'` rather than `instanceof NThread`: NThread now
|
|
74
|
+
// lives in a different package than this class, so a caller's own
|
|
75
|
+
// cross-package-resolved `NThread` copy can fail an `instanceof` check
|
|
76
|
+
// here even though it's structurally identical (same root cause as
|
|
77
|
+
// `isMiddlewareAccessor` elsewhere in this codebase -- see its doc
|
|
78
|
+
// comment on why `instanceof` against a concrete class is unreliable
|
|
79
|
+
// across a package boundary under Wine).
|
|
80
|
+
if (typeof backendOrPid === 'number') {
|
|
81
|
+
nthreadRoot = new RedirectorHostAccessor(backendOrPid);
|
|
82
|
+
nthread = new NThread(backendOrPid, threadId, options, nthreadRoot);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
nthread = backendOrPid;
|
|
86
|
+
}
|
|
87
|
+
const pid = nthread.processId;
|
|
88
|
+
super(new ThrowingMemoryAccessor(pid));
|
|
89
|
+
const bootstrap = new BootstrapHostAccessor(pid, this);
|
|
90
|
+
this.bootstrapRoot = bootstrap;
|
|
91
|
+
bootstrap.backend = nthread;
|
|
92
|
+
const redirector = new IndirectCallRedirectorAccessor(nthread, bootstrap);
|
|
93
|
+
const machineCodePool = new MachineCodePoolMiddleware(redirector, bootstrap);
|
|
94
|
+
const memsetWrite = new MemsetWriteAccessor(machineCodePool, bootstrap);
|
|
95
|
+
const memcmpRead = new MemcmpReadAccessor(memsetWrite, bootstrap);
|
|
96
|
+
const fileWriter = new FileTransferWriteAccessor(memcmpRead, bootstrap);
|
|
97
|
+
const fileReader = new FileTransferReadAccessor(fileWriter, bootstrap);
|
|
98
|
+
const scanner = new ScannerMiddleware(fileReader, bootstrap);
|
|
99
|
+
const marshalling = new MarshallingCallableAccessor(scanner, bootstrap);
|
|
100
|
+
this.backend = marshalling;
|
|
101
|
+
let b = marshalling;
|
|
102
|
+
while (isMiddlewareAccessor(b)) {
|
|
103
|
+
b = b.backend;
|
|
104
|
+
}
|
|
105
|
+
if (b) {
|
|
106
|
+
this._processId = b.processId;
|
|
107
|
+
}
|
|
108
|
+
// Only for the (pid, threadId, options) form: we built `nthreadRoot`
|
|
109
|
+
// ourselves above, so we're the only one who could ever wire it -- route
|
|
110
|
+
// its bootstrap stub calls down through this indirect chain. For the
|
|
111
|
+
// `backend: NThread | NThreadRaceAccessor` form, `nthreadRoot` is
|
|
112
|
+
// undefined here and the caller's own `root` (whatever it is) is left
|
|
113
|
+
// untouched -- see the class doc comment.
|
|
114
|
+
if (nthreadRoot) {
|
|
115
|
+
nthreadRoot.target = this;
|
|
116
|
+
}
|
|
117
|
+
this.nthreadRef = nthread;
|
|
118
|
+
}
|
|
119
|
+
async onInit() {
|
|
120
|
+
await this.bootstrapRoot.init();
|
|
121
|
+
}
|
|
122
|
+
onInitSync() {
|
|
123
|
+
this.bootstrapRoot.initSync();
|
|
124
|
+
}
|
|
125
|
+
async onDeinit() {
|
|
126
|
+
try {
|
|
127
|
+
await this.bootstrapRoot.deinit();
|
|
128
|
+
}
|
|
129
|
+
catch { }
|
|
130
|
+
try {
|
|
131
|
+
const nt = this.nthread;
|
|
132
|
+
if (nt && typeof nt.deinit === 'function') {
|
|
133
|
+
await nt.deinit();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch { }
|
|
137
|
+
}
|
|
138
|
+
onDeinitSync() {
|
|
139
|
+
try {
|
|
140
|
+
this.bootstrapRoot.deinitSync();
|
|
141
|
+
}
|
|
142
|
+
catch { }
|
|
143
|
+
try {
|
|
144
|
+
const nt = this.nthread;
|
|
145
|
+
if (nt && typeof nt.deinitSync === 'function') {
|
|
146
|
+
nt.deinitSync();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch { }
|
|
150
|
+
}
|
|
151
|
+
toJSON() {
|
|
152
|
+
const session = super.toJSON();
|
|
153
|
+
session.accessorType = 'IndirectNThreadHostAccessor';
|
|
154
|
+
try {
|
|
155
|
+
const nt = this.nthread;
|
|
156
|
+
if (nt && typeof nt.threadId === 'number') {
|
|
157
|
+
session.threadId = nt.threadId;
|
|
158
|
+
}
|
|
159
|
+
if (nt && nt.stubs) {
|
|
160
|
+
const stubs = {};
|
|
161
|
+
for (const [k, v] of Object.entries(nt.stubs)) {
|
|
162
|
+
if (v && typeof v.address === 'bigint') {
|
|
163
|
+
stubs[k] = `0x${v.address.toString(16)}`;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (Object.keys(stubs).length > 0) {
|
|
167
|
+
session.stubs = stubs;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// In case nthreadRef is not yet resolved or stubs are not populated
|
|
173
|
+
}
|
|
174
|
+
return session;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Module-scoped and shared across every `NThreadRaceAccessor` instance --
|
|
179
|
+
* `AsyncLocalStorage` isolates by *async execution context*, not by which
|
|
180
|
+
* object holds the reference, so sharing one instance across unrelated,
|
|
181
|
+
* concurrently-racing `NThreadRaceAccessor`s (e.g. two independent
|
|
182
|
+
* `createAccessor()` calls against two different processes at once) is safe
|
|
183
|
+
* and idiomatic, the same way e.g. Express shares one ALS instance across
|
|
184
|
+
* all concurrent request handlers.
|
|
185
|
+
*/
|
|
186
|
+
const currentCandidate = new AsyncLocalStorage();
|
|
187
|
+
/**
|
|
188
|
+
* Stands in for a not-yet-known `NThread` inside an
|
|
189
|
+
* {@link IndirectNThreadHostAccessor}'s own chain -- pass an instance of
|
|
190
|
+
* this directly as that class's `backend` (its `backend: NThread |
|
|
191
|
+
* NThreadRaceAccessor` constructor form). The whole `IndirectNThreadHostAccessor`
|
|
192
|
+
* chain gets built exactly once, synchronously, right alongside every other
|
|
193
|
+
* `idType`; only the actual thread hijack is deferred to `init()`, same as
|
|
194
|
+
* the rest of this class's own machinery.
|
|
195
|
+
*
|
|
196
|
+
* Extends {@link RacingHostAccessor} and overrides its `onInit()` to
|
|
197
|
+
* actually race (`this.race()`), then sets its own `target` to the winning
|
|
198
|
+
* `NThread` directly -- so every op this class forwards (inherited from
|
|
199
|
+
* `RedirectorHostAccessor`) transparently reaches the winner from then on,
|
|
200
|
+
* with nothing above it (in `IndirectNThreadHostAccessor`'s own chain) ever
|
|
201
|
+
* needing to change.
|
|
202
|
+
*
|
|
203
|
+
* Only initializes the *raw* `NThread` hijack per candidate, not a full
|
|
204
|
+
* `IndirectNThreadHostAccessor` chain -- that chain is built exactly once,
|
|
205
|
+
* around *this* accessor rather than around any particular candidate, so the
|
|
206
|
+
* real extra work beyond landing the hijack (`IndirectCallRedirectorAccessor`,
|
|
207
|
+
* `MachineCodePoolMiddleware`, an msvcrt check, opening a remote temp file for
|
|
208
|
+
* `FileTransferWriteAccessor`, ...) naturally only ever happens once, no
|
|
209
|
+
* matter which candidate wins.
|
|
210
|
+
*
|
|
211
|
+
* Every candidate `NThread` is built with `this` (the single, shared
|
|
212
|
+
* `NThreadRaceAccessor`) as its root directly -- no per-candidate proxy
|
|
213
|
+
* object. That's normally unsafe: `NThread.onInit()`'s bootstrap
|
|
214
|
+
* (`this.root.call(stubs.jumpStub)`, landing the hijack) needs `root.call()`
|
|
215
|
+
* to resolve back to *that exact candidate's* own `call()`, and with N
|
|
216
|
+
* candidates racing concurrently through one shared root, a single mutable
|
|
217
|
+
* `backend`/`target` field can't hold N different answers at once (tried
|
|
218
|
+
* this with a plain shared root first -- every candidate's bootstrap call
|
|
219
|
+
* collided on the same placeholder and threw). The fix is `currentCandidate`
|
|
220
|
+
* above: `startRacer` (below) wraps each candidate's `init()` in
|
|
221
|
+
* `currentCandidate.run(candidate, ...)`, which threads that candidate
|
|
222
|
+
* through its *entire* async continuation (every `await` inside its own
|
|
223
|
+
* `onInit()`) in a context isolated from every other concurrently-racing
|
|
224
|
+
* candidate. `call()` (below), when `target` is still self (race not yet
|
|
225
|
+
* decided), reads `currentCandidate.getStore()` to find out which
|
|
226
|
+
* candidate's own bootstrap call this is and forwards to *its* `call()`
|
|
227
|
+
* directly -- no shared field involved. This keeps the ALS mechanism
|
|
228
|
+
* entirely local to this class (`RacingHostAccessor` itself knows nothing
|
|
229
|
+
* about it, see its doc comment) and needs zero changes to `NThread` --
|
|
230
|
+
* `this.root.call(...)` there is untouched, so root-indirection stays a
|
|
231
|
+
* generic, reusable mechanism, not something hardcoded around racing.
|
|
232
|
+
*/
|
|
233
|
+
export class NThreadRaceAccessor extends RacingHostAccessor {
|
|
234
|
+
aborts = new Map();
|
|
235
|
+
constructor(pid, nthreadOptions = {}, root) {
|
|
236
|
+
super(pid, root);
|
|
237
|
+
// RedirectorHostAccessor's own constructor sets `target` to a fresh
|
|
238
|
+
// placeholder `ThrowingHostAccessor`, never to `this` -- only
|
|
239
|
+
// `BootstrapHostAccessor` self-loops that way. `call()` below needs
|
|
240
|
+
// `target === this` to mean "race not yet decided", so set it
|
|
241
|
+
// explicitly here too.
|
|
242
|
+
this.target = this;
|
|
243
|
+
const threads = Thread.getThreads(pid);
|
|
244
|
+
if (threads.length === 0) {
|
|
245
|
+
throw new Error(`createAccessor: process ${pid} has no threads to redirect`);
|
|
246
|
+
}
|
|
247
|
+
const callerSignal = nthreadOptions.signal;
|
|
248
|
+
for (const t of threads) {
|
|
249
|
+
const controller = new AbortController();
|
|
250
|
+
// Compose with a caller-supplied signal (if any) -- either one aborts this candidate.
|
|
251
|
+
if (callerSignal) {
|
|
252
|
+
if (callerSignal.aborted)
|
|
253
|
+
controller.abort(callerSignal.reason);
|
|
254
|
+
else
|
|
255
|
+
callerSignal.addEventListener('abort', () => controller.abort(callerSignal.reason), { once: true });
|
|
256
|
+
}
|
|
257
|
+
// root = this directly -- auto-registers as a racer via
|
|
258
|
+
// MiddlewareAccessor's constructor (root.registerChild(this)); see
|
|
259
|
+
// the class doc comment for why a shared root is safe here only
|
|
260
|
+
// because of startRacer()'s AsyncLocalStorage wrapping below.
|
|
261
|
+
const nthread = new NThread(pid, t.tid, { ...nthreadOptions, signal: controller.signal }, this);
|
|
262
|
+
this.aborts.set(nthread, () => controller.abort());
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
startRacer(racer) {
|
|
266
|
+
return currentCandidate.run(racer, () => racer.init());
|
|
267
|
+
}
|
|
268
|
+
async call(func, ...args) {
|
|
269
|
+
if (this.target === this) {
|
|
270
|
+
const caller = currentCandidate.getStore();
|
|
271
|
+
if (caller)
|
|
272
|
+
return caller.call(func, ...args);
|
|
273
|
+
}
|
|
274
|
+
return super.call(func, ...args);
|
|
275
|
+
}
|
|
276
|
+
releaseLoser(racer, settled) {
|
|
277
|
+
this.aborts.get(racer)?.();
|
|
278
|
+
super.releaseLoser(racer, settled);
|
|
279
|
+
}
|
|
280
|
+
async onInit() {
|
|
281
|
+
const winner = await this.race();
|
|
282
|
+
this.target = winner;
|
|
283
|
+
}
|
|
284
|
+
onInitSync() {
|
|
285
|
+
throw new Error('NThreadRaceAccessor does not support initSync()');
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=indirect-nthread-host-accessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indirect-nthread-host-accessor.js","sourceRoot":"","sources":["../src/indirect-nthread-host-accessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
import { type AddressLike, NativeMemory, type ISyncCallableMemoryAccessor, type AllocNearOptions, type CFunction, type CMachineCode, type CCallResult, MemoryBasicInformation, Pattern, type CoreModulesStatus, MiddlewareAccessor, InittableMiddlewareAccessor, type IHostAccessor } from 'bun-xffi';
|
|
1
|
+
import { type AddressLike, NativeMemory, type ISyncCallableMemoryAccessor, type AllocNearOptions, type CFunction, type CMachineCode, type CCallResult, MemoryBasicInformation, Pattern, type CoreModulesStatus, MiddlewareAccessor, InittableMiddlewareAccessor, HostAccessor, type HostAccessorSession, type IHostAccessor, type IInittableAccessor, type IMiddlewareAccessor } from 'bun-xffi';
|
|
2
|
+
export { HostAccessor, type HostAccessorSession };
|
|
2
3
|
export declare abstract class MsvcrtDependentMiddlewareAccessor extends InittableMiddlewareAccessor {
|
|
3
4
|
protected onInit(): Promise<void>;
|
|
4
5
|
protected onInitSync(): void;
|
|
5
6
|
}
|
|
6
|
-
/**
|
|
7
|
-
* HostAccessor is a base class that automatically initializes all nested InittableMiddlewareAccessors
|
|
8
|
-
* in the backend decorator chain.
|
|
9
|
-
*/
|
|
10
|
-
export declare class HostAccessor extends InittableMiddlewareAccessor {
|
|
11
|
-
get processId(): number;
|
|
12
|
-
constructor(backend: ISyncCallableMemoryAccessor, root?: IHostAccessor);
|
|
13
|
-
protected onInit(): Promise<void>;
|
|
14
|
-
protected onInitSync(): void;
|
|
15
|
-
}
|
|
16
7
|
/**
|
|
17
8
|
* A HostAccessor that forwards all operations to a dynamically changeable target HostAccessor.
|
|
18
9
|
* This is useful for resolving circular dependencies in middleware chains where the root
|
|
@@ -59,8 +50,82 @@ export declare class RedirectorHostAccessor extends HostAccessor {
|
|
|
59
50
|
scanSync(address: AddressLike, size: number, pattern: Pattern | string): Generator<NativeMemory>;
|
|
60
51
|
close(): void;
|
|
61
52
|
protected onInit(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Mirrors the `close()` override above for the async lifecycle: every op
|
|
55
|
+
* (read/write/call/...) routes to `target` once it's no longer `this`, so
|
|
56
|
+
* `deinit()` must too. Without this, the inherited `deinitNext()` (from
|
|
57
|
+
* `InittableMiddlewareAccessor`) walks `this.backend` -- which for a
|
|
58
|
+
* subclass like `NThreadRaceAccessor` stays pointed at its own
|
|
59
|
+
* placeholder `ThrowingMemoryAccessor` forever (only `target` ever gets
|
|
60
|
+
* reassigned to the winner, per `RedirectorHostAccessor`'s whole design;
|
|
61
|
+
* see its class doc comment) -- so the real accessor `target` resolved to
|
|
62
|
+
* would never actually get deinited, leaving its underlying resource
|
|
63
|
+
* (e.g. a hijacked thread) permanently stuck.
|
|
64
|
+
*
|
|
65
|
+
* Deliberately excludes `t === this.root`: `BootstrapHostAccessor.onInit()`
|
|
66
|
+
* itself resolves `target` to `this.root` once its own backend has landed
|
|
67
|
+
* -- that's a hand-off back to whatever *contains* this accessor (e.g. a
|
|
68
|
+
* per-candidate `BootstrapHostAccessor` inside `NThreadRaceAccessor`
|
|
69
|
+
* resolves to the race accessor itself), not a distinct resource this
|
|
70
|
+
* accessor now owns. Cascading `deinit()` there would tear down the
|
|
71
|
+
* container (and everything else riding on it, e.g. the actual race
|
|
72
|
+
* winner) from a single losing candidate's own cleanup.
|
|
73
|
+
*/
|
|
74
|
+
protected onDeinit(): Promise<void>;
|
|
62
75
|
protected onInitSync(): void;
|
|
63
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* A minimal `RedirectorHostAccessor` mixin meant to be *extended*, not used
|
|
79
|
+
* directly -- its only job is giving a subclass (e.g. `NThreadRaceAccessor`)
|
|
80
|
+
* two things for free: automatic candidate collection, and a `race()` helper
|
|
81
|
+
* to actually run the race once the subclass's own `onInit()` decides it's
|
|
82
|
+
* time. `target` (inherited) is left for the subclass to set to the winner
|
|
83
|
+
* however makes sense for it -- this class never touches it itself.
|
|
84
|
+
*
|
|
85
|
+
* Candidates are never added explicitly -- every `MiddlewareAccessor`'s
|
|
86
|
+
* constructor calls `root.registerChild(this)` (a no-op on every other
|
|
87
|
+
* `IHostAccessor`; see its doc comment), so simply constructing a candidate
|
|
88
|
+
* with a `RacingHostAccessor` (sub)instance as its `root` is enough to enter
|
|
89
|
+
* it into the race.
|
|
90
|
+
*
|
|
91
|
+
* Deliberately knows nothing about *why* a caller is racing candidates -- no
|
|
92
|
+
* `NThread`, no `AbortController`, no timeout, no `AsyncLocalStorage`; a
|
|
93
|
+
* caller that needs to cancel the losers does so itself, by extending this
|
|
94
|
+
* class and overriding `releaseLoser`, and a caller whose candidates need
|
|
95
|
+
* per-candidate context threaded through their own `init()` (e.g.
|
|
96
|
+
* `NThreadRaceAccessor`, whose candidates all share one root and need
|
|
97
|
+
* `root.call()` to resolve back to *this specific* candidate while racing)
|
|
98
|
+
* does so by overriding `startRacer` -- kept as a single, narrow extension
|
|
99
|
+
* point instead of baking any particular mechanism (like
|
|
100
|
+
* `AsyncLocalStorage`) into this generic base.
|
|
101
|
+
*/
|
|
102
|
+
export declare class RacingHostAccessor extends RedirectorHostAccessor {
|
|
103
|
+
protected readonly racers: IInittableAccessor[];
|
|
104
|
+
registerChild(child: IMiddlewareAccessor): void;
|
|
105
|
+
/**
|
|
106
|
+
* Launches one racer's `init()`. Overridable so a subclass can wrap the
|
|
107
|
+
* call with its own per-candidate context (see `NThreadRaceAccessor`,
|
|
108
|
+
* which threads an `AsyncLocalStorage` context through this so its shared
|
|
109
|
+
* root's `call()` can resolve back to whichever candidate is currently
|
|
110
|
+
* bootstrapping) without this base class needing to know why.
|
|
111
|
+
*/
|
|
112
|
+
protected startRacer(racer: IInittableAccessor): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Races every registered racer's `init()` and returns whichever settles
|
|
115
|
+
* first; every other racer gets {@link releaseLoser}'d. Doesn't touch
|
|
116
|
+
* `target` itself -- callers (a subclass's own `onInit()` override)
|
|
117
|
+
* decide what to do with the winner.
|
|
118
|
+
*/
|
|
119
|
+
protected race(): Promise<IInittableAccessor>;
|
|
120
|
+
/**
|
|
121
|
+
* Called once per losing racer, right after a winner is picked. Default:
|
|
122
|
+
* deinit it once (if) its own `init()` eventually settles -- `deinit()` is
|
|
123
|
+
* a no-op for one that never finished or that already failed. Subclasses
|
|
124
|
+
* (e.g. `NThreadRaceAccessor`) can override this to *also* cancel an
|
|
125
|
+
* in-flight racer immediately, instead of only cleaning up after the fact.
|
|
126
|
+
*/
|
|
127
|
+
protected releaseLoser(racer: IInittableAccessor, settled: Promise<void>): void;
|
|
128
|
+
}
|
|
64
129
|
/**
|
|
65
130
|
* BootstrapHostAccessor is a specialized RedirectorHostAccessor designed to resolve circular dependencies
|
|
66
131
|
* during the initialization of decorator/middleware chains.
|
|
@@ -113,6 +178,9 @@ export declare class IndirectCallRedirectorAccessor extends CallRedirectorAccess
|
|
|
113
178
|
private findMallocBlock;
|
|
114
179
|
/** Shared by query()/querySync() -- pure, no I/O, so no need for two copies. */
|
|
115
180
|
private buildMallocBlockInfo;
|
|
181
|
+
private hasMsvcrt;
|
|
182
|
+
private checkMsvcrt;
|
|
183
|
+
private checkMsvcrtSync;
|
|
116
184
|
alloc(size: number, address?: AddressLike | null, protection?: number, allocationType?: number): Promise<AddressLike>;
|
|
117
185
|
allocSync(size: number, address?: AddressLike | null, protection?: number, allocationType?: number): AddressLike;
|
|
118
186
|
free(address: AddressLike, size?: number, freeType?: number): Promise<boolean>;
|
|
@@ -130,10 +198,10 @@ export declare class IndirectCallRedirectorAccessor extends CallRedirectorAccess
|
|
|
130
198
|
export declare class MarshallingCallableAccessor extends MiddlewareAccessor {
|
|
131
199
|
/**
|
|
132
200
|
* Shared by call()/callSync() -- pure decision of "does this argument need
|
|
133
|
-
* marshalling to a remote buffer, and if so, what bytes
|
|
134
|
-
*
|
|
201
|
+
* marshalling to a remote buffer, and if so, what bytes and whether to copy
|
|
202
|
+
* remote modifications back to the caller's buffer/struct after the call".
|
|
135
203
|
*/
|
|
136
|
-
private static
|
|
204
|
+
private static marshalInfo;
|
|
137
205
|
call(func: CFunction, ...args: any[]): Promise<CCallResult>;
|
|
138
206
|
callSync(func: CFunction, ...args: any[]): CCallResult;
|
|
139
207
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-accessor.d.ts","sourceRoot":"","sources":["../src/middleware-accessor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"middleware-accessor.d.ts","sourceRoot":"","sources":["../src/middleware-accessor.ts"],"names":[],"mappings":"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"}
|