Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when restore on embedded "Shared memory area is probably already created by another engine instance in another Windows session" #8363

Open
dimmon-ua opened this issue Dec 26, 2024 · 5 comments

Comments

@dimmon-ua
Copy link

Version of Firebird 3.0.12. In Windows I have installed full Firebird Server 3.0.12 and using embedded for testing or some other programs. When restoring (with db replace) using embedded engine, have error "Shared memory area is probably already created by another engine instance in another Windows session" and file of db is deleted. Earlier, before Firebird 3.0.12, I use version 3.0.10, error was the same but file became 0 bytes after that error. I think there was no that problem before 3.0.10 or maybe 3.0.9, file restored correctly.

gbak example:


gbak -rep -user SYSDBA -password masterkey E:\temp\test.fbk E:\Temp\TEST_EMB.FDB
gbak: ERROR:Shared memory area is probably already created by another engine instance in another Windows session
gbak: ERROR:failed to create database E:\Temp\TEST_EMB.FDB
gbak:Exiting before completion due to errors


IbExpert example:


IBE: Starting restore. Current time: 8:58:49
[8:58:49] gbak:transportable backup -- data in XDR format
[8:58:49] gbak: backup file is compressed
[8:58:49] gbak:backup version is 10
IBE: Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
Shared memory area is probably already created by another engine instance in another Windows session.
failed to create database E:\Temp\TEST_EMB.FDB.
Exiting before completion due to errors.
IBE: Restore completed. Current time: 8:58:49. Elapsed time: 00:00:00


Very important, if I, after Windows start connect locally only to embedded by local path E:\Temp\TEST_EMB.FDB and try to restore db, everything fine and works perfect. But, after first connect to Firebird Server by connection string LOCALHOST/3053: E:\Temp\TEST_SRV.FDB, after this, and it does not matter if I disconnect or exit the application, after connection to Firebird Server I always have error "Shared memory..." when restoring db in embedded engine by local path.

Changes in Firebird Server firebird.conf:


DefaultDbCachePages = 16K
FileSystemCacheThreshold = 128K
TempBlockSize = 2M
TempCacheLimit = 128M
RemoteServicePort = 3053
LockMemSize = 15M


Changes in Firebird Embedded firebird.conf:


Providers = Engine12
ServerMode = Classic


trying ServerMode = Super - same problem

@hvlad
Copy link
Member

hvlad commented Dec 26, 2024

Is firebird.log contains something related to this ? Check firebird.log in both server and embedded folders.

@dimmon-ua
Copy link
Author

No :( In Server firebird.log just "Guardian starting..." for today, in Embedded last record for 2021 year. Just now, Scan every location of firebird.log on my PC, maybe there is a Firebird that I don't know about from other programs, but no other files with new records.

@dimmon-ua
Copy link
Author

Also just checked Environment variables, only FIREBIRD_MSG is set. Maybe it helps.

@hvlad
Copy link
Member

hvlad commented Dec 26, 2024

Changes in Firebird Embedded firebird.conf:

Providers = Engine12

Is it really required ?

To workaround the issue you might restore Loopback provider in config of embedded instance - in this case database will be restored by Firebird service, if it is running. Regular attachments (i.e. not creating of database) will still be handled by embedded engine.

The issue is fixed in v4, see #7213

@dimmon-ua
Copy link
Author

Changes in Firebird Embedded firebird.conf:
Providers = Engine12

Is it really required ?

If I use my configuration of Firebird Server (version, port, different changes of cache sizes, users and passwords) and the same in Embedded, there is no problem, but when another vendors install different Firebird Server with their own configuration on Client PC, that could be the problem when Embedded version start restore by Loopback from another Firebird Server. Or maybe I'm wrong and misinterpreting the work of Loopback in Embedded version. By setting "Providers = Engine12" I'm limiting work only in one folder with Embedded Server only, as much as possible, to prevent from use other versions and instances of other Firebird.

To workaround the issue you might restore Loopback provider in config of embedded instance - in this case database will be restored by Firebird service, if it is running. Regular attachments (i.e. not creating of database) will still be handled by embedded engine.

But when I set "Providers = Engine12, Loopback" there interesting thing, gbak from folder of Embedded version immediately start working well and restore db by Loopback. But IbExpert and my test app not worked, same error when restore db. I checked by ProcessMonitor all 3 app use the right ones files firebird.conf and fbclient.dll from folder with Embedded version.

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

No branches or pull requests

2 participants