Failing to run when loading an incompatible plugin

Open
#259 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp
Domain
compilers

Research direction

Start in the VM code that implements the instruction for loading .dll, .so, and .dynlib plugins. Reproduce loading a debug plugin with a release Ark, then trace the uncaught exception and define the failure path so an incompatible plugin produces a clear error and aborts execution instead of leaving undefined symbols for later.

Written by the indexing model from the issue text.

Description

❗️ priority/medium 🔥 bug ark/virtual machine

In the VM, we have an instruction to load plugins (.dll, .so and .dynlib, depending on the OS), working perfectly when Ark and the plugin have been compiled with the same compiler and the same compilation options (both debug or both release).

A problem occurs when we use a debug plugin with a release ark: ark silently fails to load it, throwing an exception we aren't catching / interpreting as "bad plugin".

This should be investigated to be able to tell the user that the plugin couldn't be loaded, and we should abort execution (no plugin loaded => undefined symbols later on, coming from the plugin we didn't load, thus can not execute: better to abort to give a clear error message).

This problem will mostly be encountered by our contributors and development team, as our end users are only being provided the final binaries, which we should test before publishing. When developing we sometimes forget to recompile everything, and it's really annoying because we start searching for a bug in the VM while it's just a target to recompile.

Dominant language
C++
Stars
729
Forks
54
Avg merge
4h 8m
Merged PRs (30d)
2

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ArkScript-lang/Ark

All issues in ArkScript-lang/Ark

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.