GNU bug report logs - #5291
23.1.91; "bzr status" FAILED

Previous Next

Package: emacs;

Reported by: Eli Zaretskii <eliz <at> gnu.org>

Date: Sat, 2 Jan 2010 17:47:01 UTC

Severity: normal

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #23 received at 5291 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: 5291 <at> debbugs.gnu.org
Cc: Dan Nicolaescu <dann <at> ics.uci.edu>
Subject: Re: bug#5291: 23.1.91; "bzr status" FAILED
Date: Sun, 03 Jan 2010 20:39:06 +0200
> Date: Sun, 03 Jan 2010 06:09:58 +0200
> From: Eli Zaretskii <eliz <at> gnu.org>
> Cc: 5291 <at> debbugs.gnu.org
> 
> > Date: Sat, 2 Jan 2010 14:17:30 -0800 (PST)
> > From: Dan Nicolaescu <dann <at> ics.uci.edu>
> > Cc: 5291 <at> debbugs.gnu.org
> > 
> > What exactly creates the d:/gnu/bzr/emacs/trunk/bzr_log.ahvp69 file?
> 
> "bzr commit" does.  This file is where it puts the list of files to be
> committed, then submits it to $EDITOR (in my case, emacsclient), and
> expects me to insert the commit message there.  After "bzr commit" is
> done (i.e., the changes committed), this file is deleted by bzr.
> 
> > Is your TEMP set to d:/gnu/bzr/emacs/trunk/ ?
> 
> No.  AFAIU, bzr creates these temporary files in the directory where
> you run "bzr commit".  I see these files created in the current
> directory on GNU/Linux as well, although I will have to check if the
> same problem happens there as well as on Windows.
> 
> > I think that if you change:
> >                    (vc-bzr-command "status" t 0 file)
> > to:
> >                    (vc-bzr-command "status" t 3 file)
> > in vc-bzr-status
> > it should work, but I am not 100% sure that's TRTD.
> 
> OK, I will look into this when I have a chance.  Thanks.

I found the problem.  It seems to be Windows-specific.  (I cannot
reproduce it on GNU/Linux, but I have a slightly different version of
Bazaar there, so it could be bzr-version specific as well.  Still, the
nature of the problem (see below) makes it a safe bet that it exists
only on Windows.)

The detailed reason for the failure is found in the .bzr.log file:

  LockContention: Could not acquire lock "D:/gnu/bzr/emacs/test/.bzr/checkout/dirstate": (32, 'CreateFileW', 'The process cannot access the file because it is being used by another process.')

What happens is evidently this:

  . I run "bzr ci", which locks dirstate and launches emacsclient to
    edit the commit message that it puts on a temporary file
    bzr_log.FOO in the directory where I run "bzr ci".

  . The file with the commit message pops up in Emacs, where I edit it.

  . When I'm done editing, I save the bzr_log.FOO file.

  . Emacs then run "bzr status bzr_log.FOO" as a side effect of C-x
    C-s, because the file is inside a versioned directory.  This "bzr
    status" tries to lock dirstate again, which fails, because Windows
    fails the CreateFileW system call due to sharing issues.

I could probably submit a bug for Bazaar, but they would probably say
that Emacs is to blame as well as Bazaar: it is Emacs who invokes the
second instance of bzr while the first is still running.

It would be nice if I could tell Bazaar to put those bzr_log.FOO files
under $TMPDIR, but there doesn't seem to be a way of doing that.
Anyone?

Any ideas for how best to resolve this?

> Do you (or someone else) know where can I find the documentation of
> status code returned by bzr?

To answer my own question: exit status 3 means that there was some
fatal exception or error in running the command.  When that happens,
bzr writes a full traceback to .bzr.log file, so one should look there
for that info.




This bug report was last modified 15 years and 138 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.