X-Recipient: archive-cygwin AT delorie DOT com DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:reply-to :references:mime-version:content-type:in-reply-to; q=dns; s= default; b=HA/q3u/4r5OUBGdYPcaNrY0gf6VQzA8YHo97ZdJOw7CYfuNaBaB9c IWhb4XGnPYHClAFcGadBYRBCOgnNEGTC6yW735v+/2m586sN7Z4eqBaPhyzh74Gk 8GhipljVYuzR+FIC0EZ1PA2tKyDrxK5oU+vLVsPYHs0j52tIFMIil0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:reply-to :references:mime-version:content-type:in-reply-to; s=default; bh=VGy6u+jvqcVwUrjUEG214FmXz20=; b=XCDkEsJhhm804A57wADvwBUXscpl S9LtTgmRq/J8kX21He6b7Bcj79BNESWwNiFdlTWW8uivchLi07pj9aMagdffZSNS +gW1mKrHVSuW5otyjulqp5sC5xNG9GFEsbNagnEa7WCmVpfGkHVeapOD276UuV/1 40tdANXeuHN2n3Y= Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,TW_FC autolearn=ham version=3.3.1 Date: Tue, 4 Jun 2013 10:41:28 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: [TEST] sqlite3-3.7.17-1 (Cygwin 1.7.19 locking feature) Message-ID: <20130604084128.GB19572@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <51ACF886 DOT 10301 AT etr-usa DOT com> <51AD3BB4 DOT 2010601 AT acm DOT org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <51AD3BB4.2010601@acm.org> User-Agent: Mutt/1.5.21 (2010-09-15) On Jun 3 17:58, David Rothenberger wrote: > On 6/3/2013 1:11 PM, Warren Young wrote: > > This is a big-push attempt at a version of Cygwin SQLite that will make > > everyone happy (ha!) whether they want POSIX advisory locking behavior > > or Windows mandatory locking behavior. My part of the effort is being > > stubborn on this point and doing the basic testing and packaging. The > > real magic was added by Corinna to yesterday's 1.7.19 cygwin1.dll snapshot. > > Thank you (and thank you Corinna!) for all your hard work and > perseverance with this issue. > > Unfortunately... > > > - By default, it requests mandatory locking using the feature added in > > yesterday's Cygwin 1.7.19 snapshot. This should make it cooperate with > > native Windows programs also using SQLite despite running in Unix mode. > > > > - This mandatory-locks-by-default feature of this SQLite build can be > > disabled by setting the new CYGWIN_SQLITE_LOCKING environment variable > > to "posix". > > ... initial results with the Subversion test suite (for 1.8.0-rc2) show > that most tests fail with a "sqlite: database is locked (S5)" error > unless CYGWIN_SQLITE_LOCKING=posix. The question now is: Why? The problem here is that the semantics of POSIX locks and Windows locks is so very different. I guess that sqlite, when build in POSIX mode, (rightfully) assumes that the POSIX locks behave like POSIX locks and so uses them accordingly. This collides with the way Windows locks work. If so, mandatory locking via fcntl locks is pretty much useless in this scenario. The application using it has to know that the semantics are different and so create another code path which respects the annoying Windows lock behaviour (like the fact that a write lock blocks another write lock even if both are requested by the same process using the same HANDLE). A potential workaround is to use BSD flock locks in sqlite. Given that they lock the entire file, the behaviour is not so prone to the problems of Windows locks. It's easy enough to add that to Cygwin, so I'll do that within the hour. That requires another sqlite test release, obviouly. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat -- 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