|Subject||Re: [Firebird-Architect] Fwd: couldn't set uid - message in fbembed linux|
|Author||Ann W. Harrison|
>The embedded firebird for linux is actually the old 'classic'
>My application has embedded firebird db. When I connect db through
>classic libraries in linux , I get a messages that "lock manager:
>couldn't set uid to superuser". I get this messages when i make
>multiple connection in my firebird embedded application. I get this
>message only in linux,
architecture and quite different, structurally, from the embedded
version on windows. Windows uses a multi-threaded server library
which opens the database file exclusively then handles all connections
coming from the application and allows them to share a page cache
and a metadata cache.
The classic architecture has a single threaded library of database
services - implemented as a shared object library. Each connection
gets its own page and metadata cache. The classic architecture uses
a shared memory area called the lock table to coordinate access.
When the lock management code discovers that one process needs a
resource that another process has locked, it signals the other
process. On some Unix variants, processes can signal only within
their process groups, which works very badly if a database is
shared by process that don't share groups. In that case, a process
variously called gds_lock_manager and gds_relay runs with setmod
privilege to relay signals.
That process must be installed and run with the correct privileges.