question about RequestInterrupt

31 views
Skip to first unread message

theratliter theratliter

unread,
Nov 29, 2022, 5:55:16 AM11/29/22
to v8-users
Hi, all ! i remember that we can not run JS code in v8::RequestInterrupt, But i find i can run JS code by posting a  `Runtime.evaluate` command to V8  in v8::RequestInterrupt. My test is as follows (v8::RequestInterrupt is used by session.connectToMainThread()  to post a message  to  v8).
```
const { Worker, isMainThread } = require('worker_threads');
if (isMainThread) {
  new Worker(__filename);
  while(1) {}
} else {
  const inspector = require('inspector');
  const fs = require('fs');
  const session = new inspector.Session();
  session.connectToMainThread();
  // post a message to main thread
  session.post('Runtime.evaluate', {
    includeCommandLineAPI: true,
    expression: 'process.pid',
  }, (err, result) => {
    fs.writeFileSync('1.txt', JSON.stringify(err || result));
  });
}
```
So i wonder if we can run JS code by posting a  `Runtime.evaluate` command to V8  in v8::RequestInterrupt ?

theratliter theratliter

unread,
Nov 29, 2022, 6:13:30 AM11/29/22
to v8-users
or like this.
```
const { Worker, isMainThread } = require('worker_threads');
if (isMainThread) {
  let worker;
  while(global.stop !== 1) {
    if (!worker) {
      worker = new Worker(__filename);
    }
  }
} else {
  const inspector = require('inspector');
  const fs = require('fs');
  const session = new inspector.Session();
  session.connectToMainThread();
  session.post('Runtime.evaluate', {
    includeCommandLineAPI: true,
    expression: 'global.stop = 1',
  });
}
```
  
Reply all
Reply to author
Forward
0 new messages