Re: [bdbxml] Environment initialization on shmget systems.
George Feinberg <[email protected]>
| Newsgroups | gmane.comp.db.dbxml.general |
|---|---|
| Message-ID | <[email protected]> |
Brian,
> Hi,
>
> A while back I asked about using the shmget interface with bsddb.
> I've finally come to believe that the set_shm_key code is working
> correctly. The problem I'm having is the same DBEnv.open() flags
> that work on Windows don't work on OS/X.
>
> On Windows I'm initializing an environment by first creating an
> environment in a common directory and including the
> DB_RECOVER_FATAL | DB_CREATE flag. This removes an existing
> environment if it already exists. Then I initialize another
> environment in the same directory with the following flags:
>
> DB_INIT_MPOOL | DB_SYSTEM_MEM | DB_CREATE | DB_THREAD
You should be creating 2 distinct environments in the same directory.
I'm not sure that's what you are doing, but that is definitely
unsafe.
>
> On Windows this works fine. However on OS/X, the code bombs
> either with a DBNoSuchFileError if the environment file
> (__db.001) doesn't exist. Of course it doesn't exist; bsddb is
> supposed to be creating it.
Try setting verbose errors in DB to get more information:
http://www.sleepycat.com/docs/ref/debug/runtime.html
> I need a method to properly initialize a shared memory
> environment that works on both shmget and non-shmget
> systems. I'm calling set_shm_key under Windows since it's just
> stubbed in that environment, and that seems to work fine. But
> bsddb doesn't want to create the shared environment file on OS/X,
> even though I have file create privilidges in the directory, and
> specified the DB_CREATE flag.
Does the non-shmget environment work OK on both
platforms? Is that not sufficient?
George
------------------------------------------
To remove yourself from this list, send an
email to [email protected]