sqlite3: bug with monotone

Warren Young warren@etr-usa.com
Mon Jun 3 17:36:00 GMT 2013

On 6/2/2013 04:31, Corinna Vinschen wrote:
> I just applied a patch to implement mandatory locking.

Thank you!

> It also supports
> F_GETLK, with limited usability due to Windows restrictions, as I
> explained in other mail.

It is what it is.

A haiku:

     Yesterday it worked.
     Today it is not working.
     Windows is like that.

> I dropped the F_MDLCK idea. Instead I implemented a specific fcntl code
> to switch to mandatory locking on a file descriptor:
>    fcntl (fd, F_LCK_MANDATORY, 1);

Could you add an O_MAND open(2) option as well to turn on the same 
feature?  This will avoid a race condition.

I apologize for not thinking of this earlier.  It just occurred to me as 
I was working on the SQLite patch to make use of this new feature.

> I didn't add a way for the user to switch on mandatory locking for now,
> and I don't intend to do that for 1.7.19.  Hope that helps, nevertheless.

I *think* it's sufficient.  I may think differently later. :)

My current plan is that Cygwin SQLite will build in "Unix mode" now, but 
with the build flag Yaakov requested above, and mandatory locking 
enabled unless an environment variable is set.  This will let those in 
Achim's camp use the official Cygwin SQLite but ask it to run in pure 
POSIX mode.

A test build will appear later today.

> Please give the 32 bit snapshot a try ASAP.

As I see it, the test will proceed in several stages:

0. I patch SQLite and run it against both .18 and your snapshot, and 
strace it to verify that fcntl(fd, 0x99, 1) is called and returns 0 with 
the snapshot and returns -1 with errno == EINVAL for .18.  Both count as 
"success" so we don't have to require .19.

1. I upload it, and Achim and Yaakov try it and see if this new build 
satisfies their use cases.

2. I promote test to curr -- waiting for .19 to hit the mirrors if Achim 
and Yaakov get back to me before that -- and wait for screams from the 

3. A month or two hence, I'll tell upstream about the patch, and hope 
they adopt it.

Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

More information about the Cygwin mailing list