unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* Assertion failure while building libtool
@ 2013-06-07 17:25 Mark H Weaver
  2013-06-07 20:49 ` Ludovic Courtès
  0 siblings, 1 reply; 7+ messages in thread
From: Mark H Weaver @ 2013-06-07 17:25 UTC (permalink / raw)
  To: bug-guix

I did a clean rebuild of guix from git master (make clean; ./bootstrap;
make), and then attempted to upgrade all packages.  After several
successful builds, the daemon printed this:

guix-daemon: nix/libstore/local-store.cc:526: void nix::canonicalisePathMetaData_(const Path&, uid_t, nix::InodesSeen&): Assertion `!((((st.st_mode)) & 0170000) == (0040000))' failed.

Here are the last several lines of output from the console where I ran
the upgrade:

--8<---------------cut here---------------start------------->8---
test -z "/nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2/share/man/man1" || /nix/store/2p8di9qlp6l5z7bq5qgnpx99vl8rim2a-coreutils-8.21/bin/mkdir -p "/nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2/share/man/man1"
 /nix/store/2p8di9qlp6l5z7bq5qgnpx99vl8rim2a-coreutils-8.21/bin/install -c -m 644 ./doc/libtool.1 ./doc/libtoolize.1 '/nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2/share/man/man1'
make[3]: Leaving directory `/tmp/nix-build-libtool-2.4.2.drv-0/libtool-2.4.2'
make[2]: Leaving directory `/tmp/nix-build-libtool-2.4.2.drv-0/libtool-2.4.2'
make[1]: Leaving directory `/tmp/nix-build-libtool-2.4.2.drv-0/libtool-2.4.2'
phase `install' succeeded after 1 seconds
starting phase `patch-shebangs'
phase `patch-shebangs' succeeded after 0 seconds
starting phase `strip'
stripping binaries in "/nix/store/g1wl3hkiykindg7xjl05r57vim6jsyki-libtool-2.4.2-bin/bin" with flags ("--strip-debug")
strip:/nix/store/g1wl3hkiykindg7xjl05r57vim6jsyki-libtool-2.4.2-bin/bin/libtool: File format not recognized
strip:/nix/store/g1wl3hkiykindg7xjl05r57vim6jsyki-libtool-2.4.2-bin/bin/libtoolize: File format not recognized
stripping binaries in "/nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2/lib" with flags ("--strip-debug")
strip:/nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2/lib/libltdl.la: File format not recognized
phase `strip' succeeded after 0 seconds
Backtrace:
In ice-9/boot-9.scm:
 157: 13 [catch #t #<catch-closure 1cbb4c0> ...]
In unknown file:
   ?: 12 [apply-smob/1 #<catch-closure 1cbb4c0>]
In ice-9/boot-9.scm:
  63: 11 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
 432: 10 [eval # #]
In ice-9/boot-9.scm:
2320: 9 [save-module-excursion #<procedure 1cebcc0 at ice-9/boot-9.scm:3961:3 ()>]
3966: 8 [#<procedure 1cebcc0 at ice-9/boot-9.scm:3961:3 ()>]
In unknown file:
   ?: 7 [load-compiled/vm "/home/mhw/.cache/guile/ccache/2.0-LE-8-2.0/home/mhw/guix/scripts/guix.go"]
In guix/ui.scm:
 462: 6 [run-guix-command package "--upgrade"]
In ice-9/boot-9.scm:
 157: 5 [catch srfi-34 #<procedure 2821d20 at guix/ui.scm:148:2 ()> ...]
In guix/scripts/package.scm:
 929: 4 [#<procedure 2825f30 at guix/scripts/package.scm:915:8 ()>]
 824: 3 [process-actions (# # # #)]
In guix/store.scm:
 474: 2 [build-derivations # #]
 325: 1 [process-stderr #]
In guix/serialization.scm:
  49: 0 [read-int #<input-output: socket 5>]

guix/serialization.scm:49:4: In procedure read-int:
guix/serialization.scm:49:4: In procedure bv-u32-ref: Wrong type argument in position 1 (expecting bytevector): #<eof>
--8<---------------cut here---------------end--------------->8---

This is current git master (v0.2-82-gb2e3dd9) running on Debian Wheezy
with Guile 2.0.9.  I ran the daemon with the command:

 ./pre-inst-env guix-daemon --no-substitutes --build-users-group=guix-builder

The upgrade command was: ./pre-inst-env guix package --upgrade

Any idea what went wrong here?

      Mark

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Assertion failure while building libtool
  2013-06-07 17:25 Assertion failure while building libtool Mark H Weaver
@ 2013-06-07 20:49 ` Ludovic Courtès
  2013-06-08  2:45   ` Mark H Weaver
  0 siblings, 1 reply; 7+ messages in thread
From: Ludovic Courtès @ 2013-06-07 20:49 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: bug-guix

Mark H Weaver <mhw@netris.org> skribis:

> I did a clean rebuild of guix from git master (make clean; ./bootstrap;
> make), and then attempted to upgrade all packages.  After several
> successful builds, the daemon printed this:
>
> guix-daemon: nix/libstore/local-store.cc:526: void nix::canonicalisePathMetaData_(const Path&, uid_t, nix::InodesSeen&): Assertion `!((((st.st_mode)) & 0170000) == (0040000))' failed.

Yes, this is a daemon bug pending a fix:
<https://github.com/NixOS/nix/issues/122>.

In the meantime, you can hopefully work around it by deleting the
already-present output–i.e., by running either:

  guix gc --delete /nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2

or

  guix gc --delete /nix/store/g1wl3hkiykindg7xjl05r57vim6jsyki-libtool-2.4.2-bin

HTH,
Ludo’.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Assertion failure while building libtool
  2013-06-07 20:49 ` Ludovic Courtès
@ 2013-06-08  2:45   ` Mark H Weaver
  2013-06-08 14:35     ` Ludovic Courtès
  0 siblings, 1 reply; 7+ messages in thread
From: Mark H Weaver @ 2013-06-08  2:45 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix

Hi Ludovic,

ludo@gnu.org (Ludovic Courtès) writes:

> Mark H Weaver <mhw@netris.org> skribis:
>
>> I did a clean rebuild of guix from git master (make clean; ./bootstrap;
>> make), and then attempted to upgrade all packages.  After several
>> successful builds, the daemon printed this:
>>
>> guix-daemon: nix/libstore/local-store.cc:526: void
>> nix::canonicalisePathMetaData_(const Path&, uid_t,
>> nix::InodesSeen&): Assertion `!((((st.st_mode)) & 0170000) ==
>> (0040000))' failed.
>
> Yes, this is a daemon bug pending a fix:
> <https://github.com/NixOS/nix/issues/122>.
>
> In the meantime, you can hopefully work around it by deleting the
> already-present output–i.e., by running either:
>
>   guix gc --delete /nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2

This command fails because there are still references:

--8<---------------cut here---------------start------------->8---
mhw@tines:~/guix$ ./pre-inst-env guix gc --delete /nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2
finding garbage collector roots...
removing stale temporary roots file `/usr/local/var/nix/temproots/18019'
guix gc: error: build failed: cannot delete path `/nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2' since it is still alive
mhw@tines:~/guix$ ./pre-inst-env guix gc --references /nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2
/nix/store/gk8dpqzml7n6ah0nxi59hrpwjaqqml64-gcc-4.7.3
/nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2
/nix/store/ybdv89csf4sn7wbmgj9kfjjk1b0mhrlb-glibc-2.17
/nix/store/zch43a56qdchdw0xm3lwpr8ydg8ksx25-bash-4.2
--8<---------------cut here---------------end--------------->8---

> or
>
>   guix gc --delete /nix/store/g1wl3hkiykindg7xjl05r57vim6jsyki-libtool-2.4.2-bin

This command succeeds, but does not solve the problem for me.

Any other suggestions?

     Thanks,
       Mark

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Assertion failure while building libtool
  2013-06-08  2:45   ` Mark H Weaver
@ 2013-06-08 14:35     ` Ludovic Courtès
  2013-06-08 18:04       ` Mark H Weaver
  2013-06-15 13:20       ` Ludovic Courtès
  0 siblings, 2 replies; 7+ messages in thread
From: Ludovic Courtès @ 2013-06-08 14:35 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: bug-guix

[-- Attachment #1: Type: text/plain, Size: 997 bytes --]

Hi Mark,

Mark H Weaver <mhw@netris.org> skribis:

> ludo@gnu.org (Ludovic Courtès) writes:
>
>> Mark H Weaver <mhw@netris.org> skribis:
>>
>>> I did a clean rebuild of guix from git master (make clean; ./bootstrap;
>>> make), and then attempted to upgrade all packages.  After several
>>> successful builds, the daemon printed this:
>>>
>>> guix-daemon: nix/libstore/local-store.cc:526: void
>>> nix::canonicalisePathMetaData_(const Path&, uid_t,
>>> nix::InodesSeen&): Assertion `!((((st.st_mode)) & 0170000) ==
>>> (0040000))' failed.
>>
>> Yes, this is a daemon bug pending a fix:
>> <https://github.com/NixOS/nix/issues/122>.
>>
>> In the meantime, you can hopefully work around it by deleting the
>> already-present output–i.e., by running either:
>>
>>   guix gc --delete /nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2
>
> This command fails because there are still references:

OK.  I believe this (untested) patch fixes the underlying problem:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1033 bytes --]

diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 3f595e3..37b839a 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2288,8 +2288,15 @@ void DerivationGoal::computeClosure()
                     % path % i->second.hashAlgo % printHash16or32(h) % printHash16or32(h2));
         }
 
-        /* Get rid of all weird permissions. */
-        canonicalisePathMetaData(path, buildUser.enabled() ? buildUser.getUID() : -1);
+	/* Get rid of all weird permissions.  If `path' already existed (as
+	   can happen with multiple-output derivations), it is already owned
+	   by `root' and not by the build user.  In that case, skip
+	   canonicalisation altogether.
+	   See <https://github.com/NixOS/nix/issues/122> for details.  */
+	canonicalisePathMetaData(path,
+				 (buildUser.enabled() && st.st_uid == buildUser.getUID())
+				 ? buildUser.getUID()
+				 : -1);
 
         /* For this output path, find the references to other paths
            contained in it.  Compute the SHA-256 NAR hash at the same

[-- Attachment #3: Type: text/plain, Size: 131 bytes --]


Could you rebuild the daemon with that patch, relaunch the libtool
build, and check if it fixes the problem?

TIA,
Ludo’.

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: Assertion failure while building libtool
  2013-06-08 14:35     ` Ludovic Courtès
@ 2013-06-08 18:04       ` Mark H Weaver
  2013-06-08 22:57         ` Ludovic Courtès
  2013-06-15 13:20       ` Ludovic Courtès
  1 sibling, 1 reply; 7+ messages in thread
From: Mark H Weaver @ 2013-06-08 18:04 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix

Hi Ludovic,

ludo@gnu.org (Ludovic Courtès) writes:
> Could you rebuild the daemon with that patch, relaunch the libtool
> build, and check if it fixes the problem?

Works for me!  Thanks :)

    Mark

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Assertion failure while building libtool
  2013-06-08 18:04       ` Mark H Weaver
@ 2013-06-08 22:57         ` Ludovic Courtès
  0 siblings, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2013-06-08 22:57 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: bug-guix

Mark H Weaver <mhw@netris.org> skribis:

> ludo@gnu.org (Ludovic Courtès) writes:
>> Could you rebuild the daemon with that patch, relaunch the libtool
>> build, and check if it fixes the problem?
>
> Works for me!  Thanks :)

Great, thanks for testing!  I’m proposing the patch upstream now.

Ludo’.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Assertion failure while building libtool
  2013-06-08 14:35     ` Ludovic Courtès
  2013-06-08 18:04       ` Mark H Weaver
@ 2013-06-15 13:20       ` Ludovic Courtès
  1 sibling, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2013-06-15 13:20 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: bug-guix

ludo@gnu.org (Ludovic Courtès) skribis:

> Hi Mark,
>
> Mark H Weaver <mhw@netris.org> skribis:
>
>> ludo@gnu.org (Ludovic Courtès) writes:
>>
>>> Mark H Weaver <mhw@netris.org> skribis:
>>>
>>>> I did a clean rebuild of guix from git master (make clean; ./bootstrap;
>>>> make), and then attempted to upgrade all packages.  After several
>>>> successful builds, the daemon printed this:
>>>>
>>>> guix-daemon: nix/libstore/local-store.cc:526: void
>>>> nix::canonicalisePathMetaData_(const Path&, uid_t,
>>>> nix::InodesSeen&): Assertion `!((((st.st_mode)) & 0170000) ==
>>>> (0040000))' failed.
>>>
>>> Yes, this is a daemon bug pending a fix:
>>> <https://github.com/NixOS/nix/issues/122>.
>>>
>>> In the meantime, you can hopefully work around it by deleting the
>>> already-present output–i.e., by running either:
>>>
>>>   guix gc --delete /nix/store/wbsypglflcy7fi08h4finffjy9mqzh12-libtool-2.4.2
>>
>> This command fails because there are still references:
>
> OK.  I believe this (untested) patch fixes the underlying problem:

Commit 16357e8 updates the ‘nix-upstream’ submodule to the latest Nix,
which has a fix for this problem.  Re-run ./bootstrap to get it.

Details at https://github.com/NixOS/nix/issues/122 .

Ludo’.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-06-15 13:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-07 17:25 Assertion failure while building libtool Mark H Weaver
2013-06-07 20:49 ` Ludovic Courtès
2013-06-08  2:45   ` Mark H Weaver
2013-06-08 14:35     ` Ludovic Courtès
2013-06-08 18:04       ` Mark H Weaver
2013-06-08 22:57         ` Ludovic Courtès
2013-06-15 13:20       ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).