[elephant-devel] Problem with LWW 5.1.2, BDB-backend

Plamen . plamen.usenet at gmail.com
Tue Dec 8 08:16:43 UTC 2009


Hi Elliott, Jan

ok, I had a setup in which I have only BDB 4.7.25 on the laptop, no
more CFFI and only the newest UFFI. The my-config.sexp states "4.7" as
a version and I removed all the constants from previous BDB versions
in the bberkeley-constants.lisp as well as all existing FASLs.I use
Elliott's DLLs. Same effect - "Invalid argument" in all places
described earlier.

What I checked until now are the FLAGS-encodings - they are correct,
the constants also for the 4.7 version. Which means that the problem
is not a version or a 32/64-bit issue but something on the
UFFI/DLL/BDB-chain....

Elliot, if you give me a script to compile the DLLs with GCC (I have
the memutil one, but not the libberkeley-db.dll and following what is
wirttten in the .ASD file doesn't produce for me the DLLs), I could
start learning the GDB to try to see what happens on the C-side in the
spare free time. Or I could try to compile the whole thing using VS,
there at least I have some memories about the toolchain, but hope of
course that you will be faster than me with the debugging :)

Plamen

On Tue, Dec 8, 2009 at 1:14 AM, Ian Eslick <eslick at media.mit.edu> wrote:
> The error 22 is almost always an issue with:
>
> 1) Mismatch between code, libberkeley-db, BDB DLL assumptions about BDB version
>        Are you sure your code is using constants for BDB-4.7 (set in my-config.sexp)
> 2) CFFI/UFFI
> 3) Sometimes I've seen this be a 64-bit vs. 32-bit issue
>
> Your db-env-set-max-locks error seem to indicate an error in category #1.  Are you certain that the code knows you're using BDB-4.7?
>
> Ian
>
>
> On Dec 7, 2009, at 1:46 PM, Plamen . wrote:
>
>> Hello Elliott & Jan,
>>
>> ty a lot for the DLLs - especially the libberkeley-db.dll saved me may
>> be hours today looking in the gcc & dlltool docs...
>>
>> But - now it seems LWW can talk to the DLLs & DB, but:
>>
>> 1. in the OPEN-CONTROLLER (in the bdb-controller.lisp) I get some new
>> errors now :
>>    - (db-env-set-max-locks env max-locks) gives error 22 - invalid argument..
>>    - (db-env-set-max-transactions env max-transactions) - the same
>> I didn't found them in the "Environment Configuration" of the
>> "Environments" section of the 4.7.25 docs, so I tought may be they
>> stayed in the Lisp code from previous BDB versions and commented them
>> out. (Even if I oversee something I suppose BDB has it's defaults for
>> that at least)
>> 2. but when in the same method DB-ENV-OPEN gets called - I again get
>> the error 22 : Invalid argument.
>>
>> From what I see in the code - the invocation uses meaningfull
>> arguments, putting some debug statements tells that at least on the
>> Lisp side we have the right constant-values which correspond with the
>> "db.h"-declarations.
>>
>> So - I'm a step further with your help, but still can't even open a
>> database. I hope - there is a solution. Of course, I could try to make
>> the binding using directly the LW FFI, but that would be sad private
>> solution or unnesessery source fragmentation when there is UFFI/CFFI
>> as a base.
>>
>> (Now I use BDB 4.7.25, the newest UFFI in front of CFFI and the DLLs I
>> receved today)
>>
>> If there is a chance for help - I would be very happy.
>>
>> On Mon, Dec 7, 2009 at 7:34 PM, Elliott Slaughter
>> <elliottslaughter at gmail.com> wrote:
>>> Here are the dlls I built for the newest version of Elephant with BDB
>>> 4.7.25. If they work for you, then Ian can put them on the project page.
>>> Hope this helps.
>>>
>>> On Mon, Dec 7, 2009 at 10:21 AM, Ian Eslick <eslick at media.mit.edu> wrote:
>>>>
>>>> Elliott said he was going to give this a shot. You might correspond with
>>>> him directly.  -Ian
>>>> On Dec 7, 2009, at 12:09 AM, Plamen . wrote:
>>>>
>>>>> Hello Ian,
>>>>>
>>>>> thank you for the quick response!
>>>>>
>>>>> On Sun, Dec 6, 2009 at 5:44 PM, Ian Eslick <eslick at media.mit.edu> wrote:
>>>>>> Hey, quick answers:
>>>>>>
>>>>>> 1) In the online FAQ you'll notice that you have to ensure that you are
>>>>>> using uffi and not the uffi compatibility package from cffi.
>>>>>
>>>>> Ok, had missed that...
>>>>>
>>>>>> 2) The prebuilt DLLs are not up to date (sorry!), they need to be made
>>>>>> current against BDB 4.7 which Elephant 1.0 depends on.
>>>>>
>>>>> Ok, had no idea from the doc or source that 4.7 is the current target,
>>>>> but that's even better.
>>>>>
>>>>>> 3) We have one or two lispworks users that I'm aware of, so it should
>>>>>> work, but I can't rule out a lispworks specific problem, although I think #1
>>>>>> and #2 above explain what you're seeing.
>>>>>>
>>>>>> Are you a position to build the DLLs yourself?
>>>>>
>>>>> Haven't touched C for years now and never had the pleasure with cygwin
>>>>> but now I'll try it :)
>>>>>
>>>>>>
>>>>>> Ian
>>>>>>
>>>>>> On Dec 5, 2009, at 5:28 AM, Plamen . wrote:
>>>>>>
>>>>>>> Hello,
>>>>>>> I need to use BDB for my current application and from what I see on
>>>>>>> the net, elephant seems to be the most mature and functional solution.
>>>>>>> After following the installation instructions (I use LispWorks 5.1.2
>>>>>>> for Windows - yes - I need that configuration at the moment, with
>>>>>>> Berkeley DB 4.5.20, with prebuild DLLs (libberkeley-db.dll and
>>>>>>> libmemutil.dll) in the elephant-root and from what I see a correct
>>>>>>> my-config.sexp also in the elephant-root directory), after loading
>>>>>>> Elephant I get the following error :
>>>>>>> ELE-USER 13 > (open-store '(:bdb "/temp/db2/"))
>>>>>>> Error: The call (#<Function DB-BDB::%DB-ENV-CREATE 22053092> 0) does
>>>>>>> not match definition (#<Function DB-BDB::%DB-ENV-CREATE 22053092>
>>>>>>> DB-BDB::FLAGS DB-BDB::ERRNO).
>>>>>>> From what I see in the sources - there are 3 relevant definitions :
>>>>>>> 1. the BDB one :
>>>>>>>
>>>>>>> db_env_create
>>>>>>>
>>>>>>> ________________________________
>>>>>>>
>>>>>>> #include <db.h>
>>>>>>>
>>>>>>> int
>>>>>>> db_env_create(DB_ENV **dbenvp, u_int32_t flags);
>>>>>>>
>>>>>>> 2. then the libberkeley-db one :
>>>>>>>
>>>>>>> DB_ENV *db_env_cr(u_int32_t flags, int *errno) {
>>>>>>>  DB_ENV *envp;
>>>>>>>  *errno = db_env_create(&envp, flags);
>>>>>>>  return envp;
>>>>>>> }
>>>>>>>
>>>>>>> 3. and finally the Lisp definitions :
>>>>>>>
>>>>>>> (def-function ("db_env_cr" %db-env-create)
>>>>>>>    ((flags :unsigned-int)
>>>>>>>     (errno :int :out))
>>>>>>>  :returning :pointer-void)
>>>>>>>
>>>>>>> (defun db-env-create ()
>>>>>>>  "Create an environment handle."
>>>>>>>  (multiple-value-bind (env errno)
>>>>>>>      (%db-env-create 0)
>>>>>>>    (declare (type fixnum errno))
>>>>>>>    (if (= errno 0)
>>>>>>>       env
>>>>>>>       (error 'db-error :errno errno))))
>>>>>>>
>>>>>>> I have cffi_0.10.5 and uffi-1.6.2 (which are currently the newest
>>>>>>> versions of that libraries).
>>>>>>>
>>>>>>> The call (%db-env-create 0) in the db-env-create function looks of
>>>>>>> course weird for me, but if people use these lines of source on all
>>>>>>> other Lisp-implementations, obviously I miss something. I know the LW
>>>>>>> FFI, but I'm not really proficient in the CFFI/UFFI-conversion to see
>>>>>>> the missing parts, but if there is someone outside in the WWW who runs
>>>>>>> LWW & BDB and/or knows how to help, I would be very gratefull.
>>>>>>>
>>>>>>> Regards
>>>>>>> Plamen
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> elephant-devel site list
>>>>>>> elephant-devel at common-lisp.net
>>>>>>> http://common-lisp.net/mailman/listinfo/elephant-devel
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> elephant-devel site list
>>>>>> elephant-devel at common-lisp.net
>>>>>> http://common-lisp.net/mailman/listinfo/elephant-devel
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> elephant-devel site list
>>>>> elephant-devel at common-lisp.net
>>>>> http://common-lisp.net/mailman/listinfo/elephant-devel
>>>>
>>>>
>>>> _______________________________________________
>>>> elephant-devel site list
>>>> elephant-devel at common-lisp.net
>>>> http://common-lisp.net/mailman/listinfo/elephant-devel
>>>
>>>
>>>
>>> --
>>> Elliott Slaughter
>>>
>>> "Don't worry about what anybody else is going to do. The best way to predict
>>> the future is to invent it." - Alan Kay
>>>
>>> _______________________________________________
>>> elephant-devel site list
>>> elephant-devel at common-lisp.net
>>> http://common-lisp.net/mailman/listinfo/elephant-devel
>>>
>>
>> _______________________________________________
>> elephant-devel site list
>> elephant-devel at common-lisp.net
>> http://common-lisp.net/mailman/listinfo/elephant-devel
>
>
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel
>




More information about the elephant-devel mailing list