Re: [v8-users] Digest for v8-users@googlegroups.com - 3 updates in 1 topic

35 views
Skip to first unread message

guest271314

unread,
Jan 1, 2023, 2:25:27 PM1/1/23
to v8-u...@googlegroups.com

On Sun, Jan 1, 2023 at 4:24 AM <v8-u...@googlegroups.com> wrote:
guest271314 <guest...@gmail.com>: Dec 31 12:11PM -0800

I created Native Messaging hosts in several programming languages including
C, C++, JavaScript. In JavaScript I created a host specific to QuickJS,
Node.js, Deno. Node.js and Deno depend on V8. I use the same call in the
extension to create hosts
 
globalThis.name = chrome.runtime.getManifest().short_name;
 
globalThis.port = chrome.runtime.connectNative(globalThis.name);
port.onMessage.addListener((message) => console.log(message));
port.onDisconnect.addListener((p) => console.log(chrome.runtime.lastError));
port.postMessage(new Array(200000));
 
chrome.runtime.onInstalled.addListener((reason) => {
console.log(reason);
});
 
The same code used to work on Chromium Dev Channel. Now the V8 JavaScript
engine-specific versions increase memory usage exponentially to upwards of
1GB, then exit.
 
The input is echoed when the input array is 2000.
 
Appears to be some kind of caching or process blocking. I am not sure
though.
 
Any recent changes that impact buffering or caching procceses?
guest271314 <guest...@gmail.com>: Dec 31 02:35PM -0800

Appears to be a memory leak in Node.js and Deno when input to stdin (and/or
stdout) is greater than 4096*3. node executable memory usage climbs to
700MB+ then exits when input is new Array(4096*4).
 
Are there any V8 flags I can use to work around this?
 
On Saturday, December 31, 2022 at 12:11:16 PM UTC-8 guest271314 wrote:
 
guest271314 <guest...@gmail.com>: Dec 31 07:31PM -0800

After more testing I narrow the input to stdin length for memory to
increase pointing to Node.js and Deno executables to when I call this in
the browser
port.postMessage(new Array((4096*3)+818));
 
65531
 
is written to log.txt, which is expected
JSON.stringify(new Array((4096*3)+818)).length // 65531
 
when I add 1 to that input array
port.postMessage(new Array((4096*3)+819));
 
1567386741
 
is written to log.txt.
The relevant Node.js code
 
function getMessage() {
const header = new Uint32Array(1);
readSync(0, header);
const content = new Uint8Array(header[0]);
writeFileSync('log.txt', JSON.stringify(header[0]));
readSync(0, content);
return content;
}
 
and Deno code
 
async function getMessage() {
const header = new Uint32Array(1);
await Deno.stdin.read(header);
await Deno.writeTextFile("log.txt", header[0]);
const output = new Uint8Array(header[0]);
await Deno.stdin.read(output);
return output;
}
On Saturday, December 31, 2022 at 2:35:32 PM UTC-8 guest271314 wrote:
 
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to v8-users+u...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages