[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Building LMDB for Windows 64bits



Howard,

First I installed gdb for MinGW64 and I took your advice and added tests for rc in the many calls to start the database. I never got a non-zero return code. And running with gdb I have not been able to reproduce the problem even when running as:" while true ; do gdb -ex run mtest -ex quit ; done ;" which I killed after about 25 runs.

I then added a bunch of printf, starting before the call to rand() and when I get a seg fault, I see none of the messages. Also a bit strange, it seems that it's getting harder to get the issue to happen and the "wait time" to retry is shorter. Really looks like a timing issue.

Cheers,
Alain


On Sun, Sep 29, 2013 at 8:11 AM, Alain <alpic80@gmail.com> wrote:
Howard,

Thanks for the reply. See below

On Sat, Sep 28, 2013 at 9:44 PM, Howard Chu <hyc@symas.com> wrote:
Alain wrote:
I am not an expert at this, so I might be doing things incorrectly.

I used Mingw x86_64 to build LMDB (just changed the CC in the Makefile). I had
an issue with srandom and random in the test programs and switch to rand
instead. Now I can build successfully and make test runs mtest successfully.

Now if I try one of the other mtest[2-5] or mtest itself, I get sporadic
segmentation fault. If I wait long enough it will always work, but running the
programs in a kind of loop guarantees a seg fault error.

That's pretty normal. The test programs don't do any error checking. You're welcome to submit a patch adding the requisite error checking.

When you run the tests repeatedly eventually the DB grows to its maxsize limit and a write request fails. After that things crash because the library is returning failure codes that the test programs ignore.
This is surely not the case here. As I noted, "if I wait long enough it will always work". I was not trying to run the test programs hundreds of times, but simply like once or twice each. Again, if it fails, wait about 30 secs, and try again and it will work.


I wanted to try running with gdb but it seems that it doesn't ship with cygwin
for Mingw. Using standard gdb gives me a 193 error. Again this is getting past
my expertise here.

The test programs are actually only intended to be used with gdb, but yes, it's a pain finding a working gdb for MinGW64. The one I'm currently using is 7.1.90.20100730-cvs

http://sourceforge.net/projects/mingw-w64/files/External%20binary%20packages%20%28Win64%20hosted%29/gdb/

Great will use it.


Has anyone successfully build LMDB for Windows and can help here.

Cheers,
Alain


--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/