Skip to content

Bug: [Windows] FTS extension 0.18.1 requires OpenSSL DLLs that are not distributed #685

Description

@GlitterKill

Ladybug version

0.18.1

What operating system are you using?

Windows 11 x64

What happened?

Problem

On a clean Windows installation, the FTS extension cannot load because it depends on two OpenSSL 3 libraries that are not distributed with either @ladybugdb/core or the downloaded extension:

  • libssl-3-x64.dll
  • libcrypto-3-x64.dll

INSTALL fts successfully downloads libfts.lbug_extension, but LOAD EXTENSION fts fails with Windows error 126: “The specified module could not be found.”

Inspection of the extension's import table confirms that it imports both OpenSSL DLLs.

Diagnostic workaround

Prepending an existing OpenSSL 3 installation to PATH makes the same extension load successfully. For example, Git for Windows happens to contain compatible DLLs on some machines:

$env:Path = "C:\Program Files\Git\mingw64\bin;$env:Path"
node .\repro.mjs

This confirms the missing dependency, but relying on another application's private DLLs is not a safe deployment solution.

Expected behavior

The Windows FTS extension should work on a clean supported Windows installation.

Possible fixes include:

  1. Distribute the required OpenSSL DLLs beside libfts.lbug_extension.
  2. Statically link OpenSSL into the Windows extension.
  3. If users must install OpenSSL themselves, document the requirement and report the exact missing DLL rather than the generic Windows error 126.

A clean-Windows CI test should install and load FTS without inheriting OpenSSL from Git, Conda, or another tool's PATH.

Impact

Applications using LadybugDB cannot reliably enable FTS on Windows. Behavior currently depends on unrelated software having placed compatible OpenSSL DLLs on the machine's PATH.

Related issues

Are there known steps to reproduce?

// repro.mjs
import lbug from "@ladybugdb/core";

const db = new lbug.Database("./fts-repro.lbug");
const conn = new lbug.Connection(db);

try {
  await conn.query("INSTALL fts");
  await conn.query("LOAD EXTENSION fts");
  console.log("FTS loaded successfully");
} catch (error) {
  console.error(error);
  process.exitCode = 1;
} finally {
  await conn.close();
  await db.close();
}
npm install @ladybugdb/core@0.18.1

where.exe libssl-3-x64.dll
where.exe libcrypto-3-x64.dll

node .\repro.mjs

On a clean machine, both where.exe checks report that the files cannot be found and the extension fails to load.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions