darcs

Issue 1745 darcs add ... fails in Virtual Box shared directory

Title darcs add ... fails in Virtual Box shared directory
Priority bug Status given-up
Milestone Resolved in
Superseder Nosy List FunctorSalad, darcs-devel, dmitry.kurochkin, eivuokko, jaredj, kirby, kowey, tb, tob.brandt, wglozer
Assigned To tob.brandt
Topics Windows

Created on 2010-02-16.17:38:02 by tb, last changed 2017-07-31.02:02:31 by gh.

Files
File name Uploaded Type Edit Remove
0x086D8868.asc tob.brandt, 2010-02-19.13:45:42 text/plain
unnamed tob.brandt, 2010-03-07.19:41:08 text/html
unnamed DaniilFrumin, 2015-07-15.08:32:43 text/html
Messages
msg10013 (view) Author: tb Date: 2010-02-16.17:38:00
I use an Ubuntu guest in Virtual Box on a Windows host. When in a 
shared NTFS directory that is mounted with 'mount -t vboxsf ...', the 
command 'darcs add some.file --debug' gives the following output:

Beginning identifying repository .
Done identifying repository .
Identified darcs-2 repo: /path/to/repo
Looking for unrecorded changes...
diffing dir...
Found unrecorded changes.
Writing new pending: _darcs/patches/pending.new
darcs: _darcs/patches/pending.new: rename: resource busy (Text file 
busy)

In a repo that is not in the shared directory this command succeeds. I 
have rwx rights in the shared directory. I use the darcs package that 
comes with Ubuntu (version 2.3.0).
msg10028 (view) Author: kowey Date: 2010-02-19.10:57:10
Thanks for the report, Tob.  Any chance you could try this with the
latest beta?  See http://wiki.darcs.net/Releases/2.4 for details.  

I realise that getting set up in Ubuntu can be a bit of a pain (you'll
want the Haskell Platform).  Sorry! [The good news is that I think the
HP will be available starting from Lucid]

The reason I'm asking is because of the work Salvatore has done to avoid
the "can't delete open files on Windows" problem.  You say that this is
an NTFS directory.  Maybe that's covered by this work?
msg10029 (view) Author: kowey Date: 2010-02-19.10:59:00
Actually, there are darcs 2.4 beta binaries for Ubuntu, mentioned on
http://wiki.darcs.net/Binaries
msg10032 (view) Author: tob.brandt Date: 2010-02-19.13:45:43
I tried the 2.4 binaries. The error is different this time:

> darcs init
> darcs add foo

darcs: mmap of '_darcs/index' failed: invalid argument (Invalid argument)

> darcs add foo

darcs: _darcs/index: removeLink: resource busy (Text file busy)


Le 19/02/2010 11:59, Eric Kow a écrit :
>
> Eric Kow <kowey@darcs.net> added the comment:
>
> Actually, there are darcs 2.4 beta binaries for Ubuntu, mentioned on
> http://wiki.darcs.net/Binaries
>
> __________________________________
> Darcs bug tracker <bugs@darcs.net>
> <http://bugs.darcs.net/issue1745>
> __________________________________
Attachments
msg10033 (view) Author: kowey Date: 2010-02-19.13:48:37
Thanks! 

I think maybe a good next step would be for us to wait for the 2.4
release and the corresponding Windows binary and then see what happens
when we do the same thing outside of Ubuntu (and directly in Windows) on
the same directory.

This way we can establish that it really is just something to do with
Virtual Box (or otherwise).
msg10128 (view) Author: kirby Date: 2010-03-07.08:33:13
Windows release released :).

Please try again.
msg10131 (view) Author: tob.brandt Date: 2010-03-07.19:41:09
I tried 'darcs add ...' with various versions and setups:

Windows:
  - 2.4.0 works

Linux:
  - 2.3.0 works
  - 2.4.0 works

Linux guest on Linux host:
  - 2.3.0 works
  - 2.4.0 fails with:
    mmap of '_darcs/index' failed: invalid argument (Invalid argument)

Linux guest on Windows host:
  - 2.3.0 fails with: _darcs/patches/pending.new: rename: resource busy
(Text file busy)
  - 2.4.0 fails with:
    first invocation: mmap of '_darcs/index' failed: invalid argument
(Invalid argument)
    every following invocation: _darcs/index: removeLink: resource busy
(Text file busy)

The 2.3.0 version is from the ubuntu repository, the 2.4.0 is the binary
from darcs.net.


On 7 March 2010 09:33, Salvatore Insalaco <bugs@darcs.net> wrote:

>
> Salvatore Insalaco <kirby81@gmail.com> added the comment:
>
> Windows release released :).
>
> Please try again.
>
> ----------
> assignedto: kirby -> tob.brandt
>
> __________________________________
> Darcs bug tracker <bugs@darcs.net>
> <http://bugs.darcs.net/issue1745>
> __________________________________
>
Attachments
msg18687 (view) Author: DaniilFrumin Date: 2015-07-14.13:20:28
I can definitely reproduce this with darcs 2.8.4.

> vagrant@vagrant-ubuntu-trusty-64:/vagrant/darcsden-local$ darcs add tesst
darcs: _darcs/index: mmap of '_darcs/index' failed: invalid argument
(Invalid argument)

> vagrant@vagrant-ubuntu-trusty-64:/vagrant/darcsden-local$ darcs pull -a
Pulling from "http://hub.darcs.net/co-dan/darcsden-local"...
darcs: _darcs/index: mmap of '_darcs/index' failed: invalid argument
(Invalid argument)
msg18688 (view) Author: bfrk Date: 2015-07-15.08:28:17
I see that in src/Darcs/Repository/State.hs there is some conditional
compilation around the relevant code:
#if mingw32_HOST_OS
       renameFile (darcsdir </> "index") (darcsdir </> "index.old")
#else
       removeFile $ darcsdir </> "index"
#endif
Perhaps this is not enough in case the machine is a VM hosted by
Windows? Could we find a solution here that works for all file systems?

Failing that, we should test whether renameFile works when darcs starts
up and set a global variable accordingly, then base the decision on the
result of that test, rather than fixing it at compile time.

Another (simpler) solution would be to make the behavior configurable
with an environment variable.
msg18689 (view) Author: DaniilFrumin Date: 2015-07-15.08:32:43
Sorry, I should perhaps noted it in my comment, but I don't think the host
os or guest os plays a big role in this. This also happens in my setup
where I run Linux inside VirtualBox running on OSX.


On Wed, Jul 15, 2015 at 11:28 AM, Ben Franksen <bugs@darcs.net> wrote:

>
> Ben Franksen <benjamin.franksen@helmholtz-berlin.de> added the comment:
>
> I see that in src/Darcs/Repository/State.hs there is some conditional
> compilation around the relevant code:
> #if mingw32_HOST_OS
>        renameFile (darcsdir </> "index") (darcsdir </> "index.old")
> #else
>        removeFile $ darcsdir </> "index"
> #endif
> Perhaps this is not enough in case the machine is a VM hosted by
> Windows? Could we find a solution here that works for all file systems?
>
> Failing that, we should test whether renameFile works when darcs starts
> up and set a global variable accordingly, then base the decision on the
> result of that test, rather than fixing it at compile time.
>
> Another (simpler) solution would be to make the behavior configurable
> with an environment variable.
>
> __________________________________
> Darcs bug tracker <bugs@darcs.net>
> <http://bugs.darcs.net/issue1745>
> __________________________________
> _______________________________________________
> darcs-devel mailing list
> darcs-devel@darcs.net
> http://lists.osuosl.org/mailman/listinfo/darcs-devel
>
Attachments
msg18697 (view) Author: bfrk Date: 2015-07-16.18:20:17
Ok, red herring. Is this the only problem you noted when running on a VM
or are there others (so we could more easily narrow this down)? Could
you post the output with --debug?
History
Date User Action Args
2010-02-16 17:38:02tbcreate
2010-02-19 10:57:15koweysetpriority: bug
status: unknown -> waiting-for
topic: + Windows
messages: + msg10028
nosy: + kowey, wglozer, eivuokko, kirby, jaredj
2010-02-19 10:57:28koweysetassignedto: tb
2010-02-19 10:59:02koweysetmessages: + msg10029
2010-02-19 13:45:44tob.brandtsetfiles: + 0x086D8868.asc
nosy: + tob.brandt
messages: + msg10032
2010-02-19 13:48:39koweysetassignedto: tb -> kirby
messages: + msg10033
2010-03-07 08:33:15kirbysetassignedto: kirby -> tob.brandt
messages: + msg10128
2010-03-07 19:41:11tob.brandtsetfiles: + unnamed
messages: + msg10131
2010-09-17 10:55:27FunctorSaladsetnosy: + FunctorSalad
2015-07-14 13:20:30DaniilFruminsetmessages: + msg18687
2015-07-15 08:28:18bfrksetmessages: + msg18688
2015-07-15 08:32:44DaniilFruminsetfiles: + unnamed
messages: + msg18689
2015-07-16 18:20:19bfrksetmessages: + msg18697
2017-07-31 02:02:31ghsetstatus: waiting-for -> given-up