delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2024/10/17/09:21:10

DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 49HDL9vF481741
Authentication-Results: delorie.com;
dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=CtqgmtyV
X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5B3C93858CD9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1729171267;
bh=lAan0Ob2sDfukkLluH2cyxW9P5RoNqzVxQQ8FSoz4PE=;
h=Date:To:Cc:Subject:In-Reply-To:References:List-Id:
List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:
From:Reply-To:From;
b=CtqgmtyVJCSc3T73DZTXbcrG1ZvGZa/kKY3tzYmiB7loYna7RvVU6bgKVN9Q93dN3
c7Uam2vYgcbkmG1Zo/D1UAfMtSXyfVM6bqgzlqzRZ1y6Nk8aaXig1+605VUfgreb8t
yrYdS7hmpZfdJhIYw7yNSyfrfX7oA3TlvrE5srOk=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D863A3858D37
ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D863A3858D37
ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1729171211; cv=none;
b=ZJSw7vEp+RaqExia2DcjbFgVM322/yKtqB2xjibslVowOU0NkZRJrWgHrJzYeJ0ENBDlCCqnwxhZzZwv3C+LuRfqph7uEKmWm0l5cRu/JabshE/eO5rO1rhA0Omx9umZTX1xdZXmr44JfZItnjsVd/b1t8r2LXB5/nlYcWv8m0M=
ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key;
t=1729171211; c=relaxed/simple;
bh=jud8cVrzmAXzOThgJBMbeTZi++2xjERINC5F5rnQlq8=;
h=Date:From:To:Subject:Message-Id:Mime-Version:DKIM-Signature;
b=qFyvkKbU99OwA9zFVJZo7TG5XuSdjL9sO0A/dQXvNxlgbcACIenJfUne3/SJUiDxA6JZTAuajaUXuGJujz4LjWOcT7iEfQFiOJHY3dYqksmVgAXcd30oMgFblYi9i1KRN4A4SRV4ekJ6BdQVwEvQYY7prK0o3ZCRBEVjjEnR7r8=
ARC-Authentication-Results: i=1; server2.sourceware.org
Date: Thu, 17 Oct 2024 22:19:57 +0900
To: cygwin AT cygwin DOT com
Cc: Christian Franke <Christian DOT Franke AT t-online DOT de>
Subject: Re: cygwin 3.5.4-1: lockf() aborts on overlap and does not fail on
overflow
Message-Id: <20241017221957.11825d50d0c73b6a8560f17e@nifty.ne.jp>
In-Reply-To: <dd4111c1-d6fb-b1f5-b928-ad8d899af2c9@t-online.de>
References: <dd4111c1-d6fb-b1f5-b928-ad8d899af2c9 AT t-online DOT de>
X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32)
Mime-Version: 1.0
X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00, BODY_8BITS,
DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0,
NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS,
TXREP autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on
server2.sourceware.org
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.30
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Takashi Yano via Cygwin <cygwin AT cygwin DOT com>
Reply-To: Takashi Yano <takashi DOT yano AT nifty DOT ne DOT jp>
Errors-To: cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com
Sender: "Cygwin" <cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com>

This is a multi-part message in MIME format.

--Multipart=_Thu__17_Oct_2024_22_19_57_+0900_8Jaxzzl7gaSoc/2s
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On Mon, 14 Oct 2024 15:36:02 +0200
Christian Franke wrote:
> Two possibly independent bugs found by 'stress-ng --lockf ...':
> 
> 1) lockf() may abort the process with api_fatal() if the new range 
> partly overlaps with two ranges previously locked by the same process.
> 
> 2) lockf() prints a warning on too many locks and returns success. It 
> should not print a warning and fail with ENOLCK instead.
> 
> Testcase for both:
> 
> $ uname -r
> 3.5.4-1.x86_64
> 
> $ cat locktest.c
> #include <fcntl.h>
> #include <stdio.h>
> #include <unistd.h>
> 
> static int lock_at(int fd, int off, int size)
> {
>    if (lseek(fd, off, SEEK_SET) < 0) {
>      perror("lseek"); return -1;
>    }
>    printf("\rlock %d-%d\n", off, off + size - 1); fflush(stdout);
>    if (lockf(fd, F_LOCK, size) < 0) {
>      perror("lock"); return -1;
>    }
>    return 0;
> }
> 
> int main(int argc, char **argv)
> {
>    int fd = open("locktest.tmp", O_RDWR|O_CREAT, 0666);
>    if (fd < 0) {
>      perror("open"); return 1;
>    }
> 
>    if (argc == 1) {
>      lock_at(fd, 0, 2);
>      lock_at(fd, 2, 2);
>      lock_at(fd, 1, 2);
>    }
>    else {
>      for (int i = 0; i < 914; i++)
>        if (lock_at(fd, i, 1))
>          return 1;
>    }
>    printf("\rdone\n");
>    return 0;
> }
> 
> $ gcc -o locktest locktest.c
> 
> $ ./locktest
> lock 0-1
> lock 2-3
> lock 1-2
>       1 [main] locktest 44864 C:\cygwin64\tmp\locktest.exe: \
>         *** fatal error - NtCreateEvent(lock): 0xC0000035\
>         Hangup
> 
> $ ./locktest loop
> lock 0-0
> lock 1-1
> lock 2-2
> lock 3-3
> ...
> lock 909-909
> lock 910-910
> lock 911-911
>        0 [main] locktest 44865 inode_t::get_all_locks_list: \
>          Warning, can't handle more than 910 locks per file.
> lock 912-912
>      727 [main] locktest 44865 inode_t::get_all_locks_list: \
>          Warning, can't handle more than 910 locks per file.
> lock 913-913
>     1329 [main] locktest 44865 inode_t::get_all_locks_list: \
>          Warning, can't handle more than 910 locks per file.
> done
> 
> There is possibly also an off-by-one error as the 912'th lockf() prints 
> the first warning.

Thanks for the report.
I looked into the problems, and considered how to fix them.

Could you please try the experimental patch attached?

-- 
Takashi Yano <takashi DOT yano AT nifty DOT ne DOT jp>

--Multipart=_Thu__17_Oct_2024_22_19_57_+0900_8Jaxzzl7gaSoc/2s
Content-Type: text/plain;
 name="flock.patch"
Content-Disposition: attachment;
 filename="flock.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmxvY2suY2MgYi93aW5zdXAvY3lnd2luL2Zsb2Nr
LmNjDQppbmRleCAwZjFlZmEwMWQuLmY5OWI3ZjUzOCAxMDA2NDQNCi0tLSBhL3dpbnN1cC9jeWd3
aW4vZmxvY2suY2MNCisrKyBiL3dpbnN1cC9jeWd3aW4vZmxvY2suY2MNCkBAIC0yOTcsNiArMjk3
LDcgQEAgY2xhc3MgaW5vZGVfdA0KICAgICBIQU5ETEUJCSBpX2RpcjsNCiAgICAgSEFORExFCQkg
aV9tdHg7DQogICAgIHVpbnQzMl90CQkgaV9jbnQ7ICAgIC8qICMgb2YgdGhyZWFkcyByZWZlcmVu
Y2luZyB0aGlzIGluc3RhbmNlLiAqLw0KKyAgICB1aW50MzJfdAkJIGxvY2tfY250Ow0KIA0KICAg
cHVibGljOg0KICAgICBpbm9kZV90IChkZXZfdCBkZXYsIGlub190IGlubyk7DQpAQCAtMzIxLDYg
KzMyMiw3IEBAIGNsYXNzIGlub2RlX3QNCiAgICAgdm9pZCB1bmxvY2tfYW5kX3JlbW92ZV9pZl91
bnVzZWQgKCk7DQogDQogICAgIGxvY2tmX3QgKmdldF9hbGxfbG9ja3NfbGlzdCAoKTsNCisgICAg
dWludDMyX3QgZ2V0X2xvY2tfY291bnQgKCkgeyByZXR1cm4gbG9ja19jbnQ7IH07DQogDQogICAg
IGJvb2wgZGVsX215X2xvY2tzIChsb25nIGxvbmcgaWQsIEhBTkRMRSBmaGRsKTsNCiB9Ow0KQEAg
LTUwMyw3ICs1MDUsOCBAQCBpbm9kZV90OjpnZXQgKGRldl90IGRldiwgaW5vX3QgaW5vLCBib29s
IGNyZWF0ZV9pZl9taXNzaW5nLCBib29sIGxvY2spDQogfQ0KIA0KIGlub2RlX3Q6Omlub2RlX3Qg
KGRldl90IGRldiwgaW5vX3QgaW5vKQ0KLTogaV9sb2NrZiAoTlVMTCksIGlfYWxsX2xmIChOVUxM
KSwgaV9kZXYgKGRldiksIGlfaW5vIChpbm8pLCBpX2NudCAoMEwpDQorOiBpX2xvY2tmIChOVUxM
KSwgaV9hbGxfbGYgKE5VTEwpLCBpX2RldiAoZGV2KSwgaV9pbm8gKGlubyksIGlfY250ICgwTCks
DQorICBsb2NrX2NudCAoMCkNCiB7DQogICBIQU5ETEUgcGFyZW50X2RpcjsNCiAgIFdDSEFSIG5h
bWVbNDhdOw0KQEAgLTU4Niw2ICs1ODksNyBAQCBpbm9kZV90OjpnZXRfYWxsX2xvY2tzX2xpc3Qg
KCkNCiAgIEJPT0xFQU4gcmVzdGFydCA9IFRSVUU7DQogICBib29sIGxhc3RfcnVuID0gZmFsc2U7
DQogICBsb2NrZl90IG5ld2xvY2ssICpsb2NrID0gaV9hbGxfbGY7DQorICBpbnQgY250ID0gMDsN
CiANCiAgIFBESVJFQ1RPUllfQkFTSUNfSU5GT1JNQVRJT04gZGJpX2J1ZiA9IChQRElSRUNUT1JZ
X0JBU0lDX0lORk9STUFUSU9OKQ0KIAkJCQkJIHRwLndfZ2V0ICgpOw0KQEAgLTYxMCwxNyArNjE0
LDE2IEBAIGlub2RlX3Q6OmdldF9hbGxfbG9ja3NfbGlzdCAoKQ0KIAkgIGRiaS0+T2JqZWN0TmFt
ZS5CdWZmZXJbTE9DS19PQkpfTkFNRV9MRU5dID0gTCdcMCc7DQogCSAgaWYgKCFuZXdsb2NrLmZy
b21fb2JqX25hbWUgKHRoaXMsICZpX2FsbF9sZiwgZGJpLT5PYmplY3ROYW1lLkJ1ZmZlcikpDQog
CSAgICBjb250aW51ZTsNCi0JICBpZiAobG9jayAtIGlfYWxsX2xmID49IE1BWF9MT0NLRl9DTlQp
DQotCSAgICB7DQotCSAgICAgIHN5c3RlbV9wcmludGYgKCJXYXJuaW5nLCBjYW4ndCBoYW5kbGUg
bW9yZSB0aGFuICVkIGxvY2tzIHBlciBmaWxlLiIsDQotCQkJICAgICBNQVhfTE9DS0ZfQ05UKTsN
Ci0JICAgICAgYnJlYWs7DQotCSAgICB9DQorCSAgaWYgKGxvY2sgLSBpX2FsbF9sZiA+IE1BWF9M
T0NLRl9DTlQpDQorCSAgICBhcGlfZmF0YWwgKCJDYW4ndCBoYW5kbGUgbW9yZSB0aGFuICVkIGxv
Y2tzIHBlciBmaWxlLiIsDQorCQkgICAgICAgTUFYX0xPQ0tGX0NOVCk7DQogCSAgaWYgKGxvY2sg
PiBpX2FsbF9sZikNCiAJICAgIGxvY2tbLTFdLmxmX25leHQgPSBsb2NrOw0KIAkgIG5ldyAobG9j
aysrKSBsb2NrZl90IChuZXdsb2NrKTsNCisJICBjbnQrKzsNCiAJfQ0KICAgICB9DQorICBsb2Nr
X2NudCA9IGNudDsNCiAgIC8qIElmIG5vIGxvY2sgaGFzIGJlZW4gZm91bmQsIHJldHVybiBOVUxM
LiAqLw0KICAgaWYgKGxvY2sgPT0gaV9hbGxfbGYpDQogICAgIHJldHVybiBOVUxMOw0KQEAgLTEz
NDksNiArMTM1MiwxMCBAQCBsZl9zZXRsb2NrIChsb2NrZl90ICpsb2NrLCBpbm9kZV90ICpub2Rl
LCBsb2NrZl90ICoqY2xlYW4sIEhBTkRMRSBmaGRsKQ0KICAgcHJldiA9IGhlYWQ7DQogICBibG9j
ayA9ICpoZWFkOw0KICAgbmVlZHRvbGluayA9IDE7DQorDQorICBpZiAobm9kZS0+Z2V0X2xvY2tf
Y291bnQgKCkgKyAyID4gTUFYX0xPQ0tGX0NOVCkNCisgICAgcmV0dXJuIEVOT0xDSzsNCisNCiAg
IGZvciAoOzspDQogICAgIHsNCiAgICAgICBvdmNhc2UgPSBsZl9maW5kb3ZlcmxhcCAoYmxvY2ss
IGxvY2ssIFNFTEYsICZwcmV2LCAmb3ZlcmxhcCk7DQpAQCAtMTQ0NiwyMyArMTQ1MywyMiBAQCBs
Zl9zZXRsb2NrIChsb2NrZl90ICpsb2NrLCBpbm9kZV90ICpub2RlLCBsb2NrZl90ICoqY2xlYW4s
IEhBTkRMRSBmaGRsKQ0KIAkgIHByZXYgPSAmbG9jay0+bGZfbmV4dDsNCiAJICBsZl93YWtlbG9j
ayAob3ZlcmxhcCwgZmhkbCk7DQogCSAgb3ZlcmxhcC0+Y3JlYXRlX2xvY2tfb2JqICgpOw0KLQkg
IGxvY2stPmNyZWF0ZV9sb2NrX29iaiAoKTsNCi0JICBuZWVkdG9saW5rID0gMDsNCiAJICBjb250
aW51ZTsNCiANCiAJY2FzZSA1OiAvKiBvdmVybGFwIGVuZHMgYWZ0ZXIgbG9jayAqLw0KIAkgIC8q
DQogCSAgICogQWRkIHRoZSBuZXcgbG9jayBiZWZvcmUgb3ZlcmxhcC4NCiAJICAgKi8NCi0JICBp
ZiAobmVlZHRvbGluaykgew0KKwkgIGlmIChuZWVkdG9saW5rKQ0KKwkgICAgew0KIAkgICAgICAq
cHJldiA9IGxvY2s7DQogCSAgICAgIGxvY2stPmxmX25leHQgPSBvdmVybGFwOw0KLQkgIH0NCisJ
ICAgICAgbmVlZHRvbGluayA9IDA7DQorCSAgICB9DQogCSAgb3ZlcmxhcC0+bGZfc3RhcnQgPSBs
b2NrLT5sZl9lbmQgKyAxOw0KIAkgIGxmX3dha2Vsb2NrIChvdmVybGFwLCBmaGRsKTsNCi0JICBs
b2NrLT5jcmVhdGVfbG9ja19vYmogKCk7DQogCSAgb3ZlcmxhcC0+Y3JlYXRlX2xvY2tfb2JqICgp
Ow0KLQkgIGJyZWFrOw0KKwkgIGNvbnRpbnVlOw0KIAl9DQogICAgICAgYnJlYWs7DQogICAgIH0N
Cg==

--Multipart=_Thu__17_Oct_2024_22_19_57_+0900_8Jaxzzl7gaSoc/2s
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


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

--Multipart=_Thu__17_Oct_2024_22_19_57_+0900_8Jaxzzl7gaSoc/2s--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019