是否可以使用动态库中的Spidermonkey库?

时间:2019-07-14 14:10:03

标签: spidermonkey

我正在尝试在另一个动态库中使用SpiderMonkey库。动态主机库由可执行文件加载,并充当SpiderMonkey引擎的代理。 当主机库调用JS :: InitSelfHostedCode并由JS :: frontend :: BytecodeEmitter :: setSrcNoteOffset方法中的MOZ_ASSERT触发时,出现分段错误。 可执行文件使用dlopen调用动态加载主机库:

auto hostLibrary = dlopen(hostLibraryPath, RTLD_NOW);

我尝试在主机库中使用静态或动态SpiderMonkey库。遇到相同的细分错误。

我在MOZ_ASSERT失败之前添加了一些打印语句,并在gdb下运行了代码。看到代码中打印的结构地址与gdb报告的地址之间的差异,我感到困惑。 这是主机库使用的简化代码:

JS_Init();

JSRuntime *rt = JS_NewRuntime(…);
JSContext *cx = JS_NewContext(rt, …);

// The following call triggers segmentation fault
JS::InitSelfHostedCode(cx);

...

有趣的是,当代码是独立可执行文件的一部分而不在动态库中时,代码可以毫无问题地运行。

0 个答案:

没有答案