This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Unreliable flock

Greetings, Corinna Vinschen!

>> The script (let's call it
>> #!/bin/dash -x
>> _lock="./console-session.lock"
>> {
>>   flock -n 9 || {
>>       echo "The $(cat "$_lock") command is running already."
>>       exit 3
>>     } >&2
>>   printf "$1" >&9
>>   trap 'rm "$_lock";' EXIT HUP INT ABRT TERM
>>   sleep 20
>> } 9>> "$_lock"
>> Very simple in essence.
>> The one-liner:
>> { flock -n 9 && sleep 10 || echo Fail;} 9>> ./console-session.lock
>> Also extremely simple.
>> Open two terminals. mintty or native, bash or dash, doesn't matter.
>> chdir to the directory with the script.
>> Start script in one terminal. ./
>> Start oneliner in another terminal. Fail. How predictable!

> I don't know what I'm doing wrong, but this WJFFM with Cygwin 2.4.1
> as well as 2.5.0.  Additionally I tried to put the oneliner into a
> script but it still WFM.

It works for me, too. From time to time. But this work is completely
unreliable. It may work five times, then fail ten times in a row.
Most often it fails, if I run oneliner first. Almost 100%.

> Apart from that, did you notice the flock restrictions outlined in
> ?

If you mean the part about

> BSD file locks created via flock are only propagated to the direct parent
> process, not to grand parents or sibling processes. The locks are only valid
> in the creating process, its parent process, and subsequently started child
> processes sharing the same file descriptor.

then that's a showstopper. In short, it makes the function literally useless.
I can work around it in a given script, but... *sad panda*

Why they aren't real locks? What's use for "advisory locks"? "I think I may
have a use for this file, but you are free to delete it, if you wish" ?

With best regards,
Andrey Repin
Monday, April 4, 2016 19:27:11

Sorry for my terrible english...

Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]