Skip to content
This repository has been archived by the owner on Dec 15, 2022. It is now read-only.

Make module context-aware #101

Open
1 task done
absolute-quantum opened this issue Oct 24, 2019 · 0 comments
Open
1 task done

Make module context-aware #101

absolute-quantum opened this issue Oct 24, 2019 · 0 comments

Comments

@absolute-quantum
Copy link

absolute-quantum commented Oct 24, 2019

Prerequisites

Description

I've been experimenting with worker threads in node.js recently and noticed that the node-oniguruma module does not appear to be context-aware. In other words, the module will load/instantiate once, but as soon as another thread attempts to require oniguruma for it's own use, the following error is thrown:

Error: Module did not self-register.
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:840:18)
    at Module.load (internal/modules/cjs/loader.js:666:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:606:12)
    at Function.Module._load (internal/modules/cjs/loader.js:598:3)
    at Module.require (internal/modules/cjs/loader.js:705:19)
    at require (internal/modules/cjs/helpers.js:14:16)
    at Object.<anonymous> (~/node_modules/canvas/lib/bindings.js:3:18)
    at Module._compile (internal/modules/cjs/loader.js:799:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:810:10)
    at Module.load (internal/modules/cjs/loader.js:666:32)

Steps to Reproduce

In main thread...

const {Worker} = require('worker_threads');
var worker1 = new Worker('./child-thread.js'); 
var worker2 = new Worker('./child-thread.js');
// etc.

In child-thread.js...

{OnigRegExp, OnigScanner} = require 'oniguruma'
scanner = new OnigScanner(['c', 'a(b)?'])
// etc.

Expected behavior:

No error

Actual behavior:

Error

Reproduces how often:

100%

Versions

n.a

Additional Information

https://nodejs.org/api/addons.html#addons_context_aware_addons

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant