| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| flamerobin-26.9.5.deb | 2026-09-22 | 31.1 MB | |
| FlameRobin-26.9.5-x86.msi | 2026-09-22 | 16.1 MB | |
| flamerobin-portable-26.9.5-x86.zip | 2026-09-22 | 20.4 MB | |
| FlameRobin-26.9.5-x64.msi | 2026-09-22 | 16.9 MB | |
| flamerobin-portable-26.9.5-x64.zip | 2026-09-22 | 21.4 MB | |
| flamerobin-26.9.5.flatpak | 2026-09-22 | 15.2 MB | |
| flamerobin-macos-26.9.5.zip | 2026-09-22 | 7.5 MB | |
| FlameRobin 26.9.5 source code.tar.gz | 2026-09-22 | 1.4 MB | |
| FlameRobin 26.9.5 source code.zip | 2026-09-22 | 2.0 MB | |
| README.md | 2026-09-22 | 10.3 kB | |
| Totals: 10 Items | 131.9 MB | 0 | |
FlameRobin 26.9.5 Release Notes
FlameRobin v26.9.5 makes Firebird Embedded work out of the box on Linux and fixes a fatal error in Help → About. Along the way it fixes a long-standing defect in the per-database Client library setting and removes a second crash that shipping the engine would otherwise have introduced.
Highlights & Key Improvements
1. Firebird Embedded on Linux (#721)
Registering a database under a server with no host name is how you ask for an embedded connection. On Linux that failed with a confusing network error:
:::text
Unable to complete network request to host "localhost".
-Failed to establish a connection.
Why. The Firebird client bundled with the .deb was built with --enable-client-only, so it had no engine plugin. Firebird walks its provider chain — Providers = Remote, Engine13, Loopback — and a path with no host is declined by Remote, skipped past the missing engine, and picked up by Loopback, which quietly turns your local file into a network connection to localhost. With no server listening, you get the error above, which says nothing about embedded mode or the missing engine.
| provider | takes | what it does |
|---|---|---|
Remote |
host:/path/db.fdb |
connects to a Firebird server over the network |
Engine13 |
/path/db.fdb |
embedded — opens the file in this process |
Loopback |
/path/db.fdb |
connects to localhost over the network |
What changed. The Linux build now builds the engine and the package ships it:
ports/firebird/posix/portfile.cmakeno longer passes--enable-client-onlyon Linux, and installs theintlmodule the engine needs for every character set and collation that is not built in. macOS keeps the client-only build, where FlameRobin uses the client of the official Firebird.pkg.-
The
.debgained the Firebird tree in the layout the client's binreloc expects::::text /opt/flamerobin/lib/libfbclient.so.2 the client /opt/flamerobin/plugins/firebird/ Engine13, Srp, ChaCha, fbtrace, ... /opt/flamerobin/intl/ character sets and collations /opt/flamerobin/share/firebird/firebird.msg error message texts /opt/flamerobin/share/firebird/tzdata/ time zone database /opt/flamerobin/firebird.conf documented, everything commented out
-
The packaging step fails the build if
libEngine13.sodid not make it in, so this cannot silently regress. - Plugins are stripped on the way into the package — the engine is 198 MB with its debug info and 12 MB without — and Firebird's sample plugins are left out.
Two upstream build breakages had to be fixed to build the engine at all, both caused by vcpkg shipping static archives where distributions ship shared objects:
ports/firebird/posix-static-tomcrypt-link.patch—libtommathis now repeated afterlibtomcrypton the link line. A static archive is scanned only once, at the position it appears, andlibtomcrypt's math descriptor calls intolibtommath, so the upstream order left every one of those calls undefined andlibEngine13.sowould not link. Distributions never see this because theirlibtomcrypt.socarries its ownDT_NEEDEDonlibtommath.--with-termlib=:libncursesw.a— the narrowlibncurses.awas being picked up from the system, and on Linux it carries no terminfo symbols at all (those live inlibtinfo), soisqlfailed to link.
Verified end to end: with the resulting client, a database was created and attached with no Firebird server running, using the exact /opt/flamerobin layout the .deb installs.
[!IMPORTANT] Embedded is version-locked to the database.
Engine13opens ODS 13.0 and 13.1 — the on-disk structures of Firebird 4 and Firebird 5. An ODS 12 database (Firebird 3) needsEngine12. The new/opt/flamerobin/firebird.confdocuments how to droplibEngine12.sofrom a Firebird 3 installation into the plugins directory and add it toProviders, along with the/tmp/firebirdlock-directory pitfall.
2. Per-Database "Client library" Setting (#721)
Every registered database has a Client library field (<fbclient> in fr_databases.conf) — the documented way to point an embedded database at a Firebird installation that has an engine. It did not work: the path was stored in a process-wide static that was consulted only the first time any database connected, so whichever database connected first decided the client library for the entire application, and every later database silently reused it.
Clients are now cached per library path, so an embedded database on /opt/firebird/lib/libfbclient.so and a remote database on the bundled client can be used side by side. Covered by the new fbcpp_client_cache_test.
3. Embedded Connection Diagnostics (#721)
A connection to a host-less database that fails with a network error now explains that the client library has no embedded engine, and what to do about it, instead of leaving you with a bare localhost error. Detected by error text and by the isc_network_error / isc_net_connect_err codes, so it still works when firebird.msg is missing and the client reports bare numbers.
4. Fatal Error in Help → About After Opening a Database (#722)
Opening Help → About after connecting to a database crashed with "A fatal error has occurred".
Why. The plugin list was built by asking the Firebird plugin manager for every plugin type with a null names list. fbclient takes that list by value and does the equivalent of strlen() on it in the PluginSet constructor, so the null pointer dereferenced. Firebird never passes null itself — its internal GetPlugins helper resolves Config::getPlugins(type) first and always hands over a real string.
That explains both halves of the report:
- only after opening a database — the enumeration is skipped while the Firebird client is not initialised, which only happens on the first connection;
- only on Linux and macOS — the Windows code path wrapped the same call in
__try/__except, which silently swallowed the access violation and simply showed no plugin list.
Reproduced standalone against the same fbclient:
:::text
type 1 key Providers names=(null)
Segmentation fault (core dumped)
5. Plugin Reporting in Help → About
Shipping the engine turned the same About box into a crash for a second reason, caught before release. Asking the plugin manager to enumerate a plugin type loads every module it names and unloads them again when the set is released — and unloading the engine runs Jrd::shutdownBeforeUnload → TraceManager::shutdown, which tries to create the Firebird lock directory. When /tmp/firebird belongs to a Firebird server package and the current user has no access, the resulting exception escapes PluginModule's destructor and terminates the process:
:::text
#8 os_utils::createLockDirectory (pathname="/tmp/firebird/")
#17 Jrd::JProvider::shutdown (reason=-7)
#22 PluginModule::~PluginModule
#31 PluginSet::next
#33 getFirebirdLoadedPlugins
About no longer calls into the plugin manager at all. It reads the configured plugin names from firebird.conf and lists the modules present in the plugin directory — neither of which loads a plugin. The result is more useful than what it replaced:
:::text
Firebird client loaded from: /opt/flamerobin/lib/libfbclient.so.2
Configured plugins: Remote, Engine13, Loopback, Srp256, Srp, Legacy_Auth, fbtrace, ChaCha64, ChaCha, Arc4
Plugin directory: /opt/flamerobin/plugins/firebird
Installed plugin modules: ChaCha, Default_Profiler, Engine13, Legacy_Auth, Legacy_UserManager, Srp, fbtrace, udr_engine
An Engine* entry in that last line tells you at a glance whether an embedded connection is possible.
Documentation
docs/firebird_embedded.md (github.com) has been rewritten and expanded, and now covers:
- how Firebird chooses between embedded and the network, and why a missing engine silently becomes a
localhostconnection; - registering an embedded server and database, with the resulting
fr_databases.conf; - choosing the client library per database;
- what each FlameRobin package ships, and the
/opt/flamerobinlayout; - which engine plugin opens which ODS version, and how to add
Engine12; - command-line behaviour, including why a database passed on the command line is not embedded;
- troubleshooting: the
localhosterror, ODS mismatches, the lock directory, exclusive access andServerMode, and missing character sets.
Upgrading
- Linux
.deb: embedded works after installing this release — no Firebird server needed for ODS 13.0 / 13.1 databases. The package is larger than 26.9.4 by the stripped engine and plugin set (~26 MB). - Existing registrations are unchanged. A database registered under a server with no host name is already an embedded registration and will simply start working.
- If your database is ODS 12 or older, see the note in section 1 — add
Engine12, or point that database's Client library at a matching Firebird installation.
Tests
33 tests pass. New in this release:
about_box_plugins_test— covers both About box crashes: every plugin type resolves a real names list, and the reporting never loads a plugin module.fbcpp_client_cache_test— a database configured with its own client library is not served by the client some other database loaded first.
Full Commit Log since v26.9.4
32260363Release v26.9.5: Firebird embedded on Linux and Help -> About crash (#721, [#722])cfaaf90dReport Firebird plugins without loading them7ed084e2Make Firebird embedded work on Linux (Fixes [#721])14a5176cFix crash in Help -> About after opening a database (Fixes [#722])