Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-07-21 Thread Ricardo Wurmus


Chris Marusich  writes:

> Danny Milosavljevic  writes:
>
>> can we give thepowersgang (author of mrustc) an ssh account on a guix machine
>> reachable from the internet, for debugging this problem?
>>
>> It would be good if "guix build -K" kept the sources on that machine.
>
> Is/are the thepowersgang still willing to help us out?  Ludo, what do
> you think about Danny's request?

Is it really necessary?  We have bayfront as a developer machine, but
I’m only comfortable granting shell access to members of the Guix
community.

> While we wait, thepowersgang can in theory install Guix as usual on any
> GNU/Linux system and reproduce the issue, right Danny?  If you're in
> touch with them, maybe you could suggest that.

I think this is a better option.

--
Ricardo




Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-07-18 Thread Chris Marusich
Danny Milosavljevic  writes:

> can we give thepowersgang (author of mrustc) an ssh account on a guix machine
> reachable from the internet, for debugging this problem?
>
> It would be good if "guix build -K" kept the sources on that machine.

Is/are the thepowersgang still willing to help us out?  Ludo, what do
you think about Danny's request?

While we wait, thepowersgang can in theory install Guix as usual on any
GNU/Linux system and reproduce the issue, right Danny?  If you're in
touch with them, maybe you could suggest that.

-- 
Chris


signature.asc
Description: PGP signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-05-24 Thread Danny Milosavljevic
Hi,

can we give thepowersgang (author of mrustc) an ssh account on a guix machine
reachable from the internet, for debugging this problem?

It would be good if "guix build -K" kept the sources on that machine.

Thanks!


pgp_prUbn7rtD.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-18 Thread Danny Milosavljevic
Hi Chris,

On Sat, 16 Feb 2019 02:53:30 -0800
Chris Marusich  wrote:

> > (i.e. the things you did before, just inside a i686-linux guix
> > environment.  That only provides minimal--almost no--isolation from
> > the host, so it should allow us to test whether the personality is the
> > only possible culprit)  
> 
> Did you mean to say that by using a pure guix environment, we can
> achieve a high degree of isolation?

* "guix environment" provides very low isolation (almost none)
* "guix environment --pure" provides better isolation by at least removing
things from $PATH which aren't supposed to be there.
* "guix environment -C" provides very good isolation by creating a new
initially-empty container.

What I meant is that "guix environment -s i686-linux" is very different
from guix-daemon (especially it does not set the personality) and might
allow us to proceed without error, or with a different error.

But apparently the actual problem is that now it always succeeds.

Today I think we should reproduce the guix-daemon environment as closely as
possible in order to make it fail again--and then use the setup right before
it started failing again.

In this case if we wanted to have a similar environment to the guix-daemon,
I think "guix environment -C" would be the most similar - and should fail.
I'm not sure whether guix environment -C sets the personality.  If not,
then your program should be good for setting the personality.

Your program could be simpler if it just used execv(argv[1], argv + 1)
(or execv(argv[1], [1]))
instead of copying the argument vector; if one wants to skip elements at
the front of an array, using the fact that arrays elements are sequential
in C, without gaps, ordered by increasing index, can be very useful.

> I tried what you suggested.  The mrustc invocation still succeeded.

So it always succeeds outside guix-daemon container (does that include
"guix environment -C" ?), but doesn't succeed inside a guix-daemon
container, is that correct?

> Just for fun, I also made a simple wrapper program that lets me run
> another program using the LINUX32 personality (see attached).  I think I
> programmed it correctly, but C is not (yet!) my forte, so if I made an
> error, please let me know.

>From within the same pure environment, I
> used this wrapper program to invoke mrustc in the same way, and it
> _still_ succeeded.  That surprised me, since I expected it to fail.

That's strange.  Then maybe the personality is not the reason.

> Can you think of any other way I can try to reproduce the issue?

I'd try 

guix environment -s i686-linux -C rust@1.19.0
And then try to build it in there (or only run the same steps you
ran before--should be enough).

Thanks for looking into it.  Apparently it seems to be possible to get
working--it's just a matter of tuning the environment (maybe even
only by removing things).

(If it is the personality, I suspect that it changes the system call
interface and maybe mrustc assumes the x86_64 syscall interface at
all times)


pgpde5qteCQa4.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-16 Thread Chris Marusich
Hi Danny,

Danny Milosavljevic  writes:

> Can you try the following (if you didn't already)?
>
> [...]
>
> (i.e. the things you did before, just inside a i686-linux guix
> environment.  That only provides minimal--almost no--isolation from
> the host, so it should allow us to test whether the personality is the
> only possible culprit)

Did you mean to say that by using a pure guix environment, we can
achieve a high degree of isolation?

I tried what you suggested.  The mrustc invocation still succeeded.

Just for fun, I also made a simple wrapper program that lets me run
another program using the LINUX32 personality (see attached).  I think I
programmed it correctly, but C is not (yet!) my forte, so if I made an
error, please let me know.  From within the same pure environment, I
used this wrapper program to invoke mrustc in the same way, and it
_still_ succeeded.  That surprised me, since I expected it to fail.

Can you think of any other way I can try to reproduce the issue?

-- 
Chris


with_linux32_personality.c
Description: Binary data


signature.asc
Description: PGP signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-15 Thread Danny Milosavljevic
Hi Chris,

On Fri, 15 Feb 2019 01:11:02 -0800
Chris Marusich  wrote:

> Here's more info about what I did.  On my x86_64-linux Guix System
> machine, where the build failed, I ran the following commands:
> 
> --8<---cut here---start->8---
> cd /tmp/guix-build-rust-1.19.0.drv-0
> . environment-variables
> cd rustc-1.19.0-src/
> /gnu/store/jxq5p3mx2gavj7hws1drz3pndn87lqrl-mrustc-0.8.0/bin/mrustc 
> src/tools/cargo/src/bin/cargo.rs --crate-name cargo --crate-type bin 
> --crate-tag 0_20_0 -g --cfg debug_assertions -O -o output/cargo-build/cargo 
> -L output/cargo-build --extern cargo=output/cargo-build/libcargo-0_20_0.hir 
> --extern crates_io=output/cargo-build/libcrates_io-0_9_0.hir --extern 
> crossbeam=output/cargo-build/libcrossbeam-0_2_10.hir --extern 
> curl=output/cargo-build/libcurl-0_4_6.hir --extern 
> docopt=output/cargo-build/libdocopt-0_7_0.hir --extern 
> env_logger=output/cargo-build/libenv_logger-0_4_2.hir --extern 
> error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
> filetime=output/cargo-build/libfiletime-0_1_10.hir --extern 
> flate2=output/cargo-build/libflate2-0_2_19.hir --extern 
> fs2=output/cargo-build/libfs2-0_4_1.hir --extern 
> git2=output/cargo-build/libgit2-0_6_6.hir --extern 
> git2_curl=output/cargo-build/libgit2_curl-0_7_0.hir --extern 
> glob=output/cargo-build/libglob-0_2_11.hir --extern 
> jobserver=output/cargo-build/libjobserver-0_1_6.hir --extern 
> libc=output/cargo-build/liblibc-0_2_22.hir --extern 
> libgit2_sys=output/cargo-build/liblibgit2_sys-0_6_12.hir --extern 
> log=output/cargo-build/liblog-0_3_7.hir --extern 
> num_cpus=output/cargo-build/libnum_cpus-1_4_0.hir --extern 
> rustc_serialize=output/cargo-build/librustc_serialize-0_3_24.hir --extern 
> scoped_tls=output/cargo-build/libscoped_tls-0_1_0.hir --extern 
> semver=output/cargo-build/libsemver-0_7_0.hir --extern 
> serde=output/cargo-build/libserde-1_0_6.hir --extern 
> serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
> serde_ignored=output/cargo-build/libserde_ignored-0_0_3.hir --extern 
> serde_json=output/cargo-build/libserde_json-1_0_2.hir --extern 
> shell_escape=output/cargo-build/libshell_escape-0_1_3.hir --extern 
> tar=output/cargo-build/libtar-0_4_13.hir --extern 
> tempdir=output/cargo-build/libtempdir-0_3_5.hir --extern 
> term=output/cargo-build/libterm-0_4_5.hir --extern 
> toml=output/cargo-build/libtoml-0_4_1.hir --extern 
> url=output/cargo-build/liburl-1_4_0.hir --extern 
> openssl=output/cargo-build/libopenssl-0_9_12.hir -L output -L 
> /gnu/store/jxq5p3mx2gavj7hws1drz3pndn87lqrl-mrustc-0.8.0/lib/mrust
> --8<---cut here---end--->8---

> Do I need to do something special to attempt to run this mrustc program
> in "i686-linux" mode?  For example, I see that the guix-daemon sets the

> Linux kernel's personality to 32 bits by invoking
> personality(PER_LINUX32) in nix/libstore/build.cc.  Maybe mrustc won't
> fail unless we do that first?

Oh, that might be related.  I didn't think of that.

Can you try the following (if you didn't already)?

$ guix environment --pure -s i686-linux rust@1.19.0
[env]$ cd /tmp/guix-build-rust-1.19.0.drv-0
[env]$ . environment-variables
[env]$ cd rustc-1.19.0-src/
[env]$ /gnu/store/jxq5p3mx2gavj7hws1drz3pndn87lqrl-mrustc-0.8.0/bin/mrustc 
src/tools/cargo/src/bin/cargo.rs --crate-name cargo --crate-type bin 
--crate-tag 0_20_0 -g --cfg debug_assertions -O -o output/cargo-build/cargo -L 
output/cargo-build --extern cargo=output/cargo-build/libcargo-0_20_0.hir 
--extern crates_io=output/cargo-build/libcrates_io-0_9_0.hir --extern 
crossbeam=output/cargo-build/libcrossbeam-0_2_10.hir --extern 
curl=output/cargo-build/libcurl-0_4_6.hir --extern 
docopt=output/cargo-build/libdocopt-0_7_0.hir --extern 
env_logger=output/cargo-build/libenv_logger-0_4_2.hir --extern 
error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
filetime=output/cargo-build/libfiletime-0_1_10.hir --extern 
flate2=output/cargo-build/libflate2-0_2_19.hir --extern 
fs2=output/cargo-build/libfs2-0_4_1.hir --extern 
git2=output/cargo-build/libgit2-0_6_6.hir --extern 
git2_curl=output/cargo-build/libgit2_curl-0_7_0.hir --extern 
glob=output/cargo-build/libglob-0_2_11.hir --extern 
jobserver=output/cargo-build/libjobserver-0_1_6.hir --extern 
libc=output/cargo-build/liblibc-0_2_22.hir --extern 
libgit2_sys=output/cargo-build/liblibgit2_sys-0_6_12.hir --extern 
log=output/cargo-build/liblog-0_3_7.hir --extern 
num_cpus=output/cargo-build/libnum_cpus-1_4_0.hir --extern 
rustc_serialize=output/cargo-build/librustc_serialize-0_3_24.hir --extern 
scoped_tls=output/cargo-build/libscoped_tls-0_1_0.hir --extern 
semver=output/cargo-build/libsemver-0_7_0.hir --extern 
serde=output/cargo-build/libserde-1_0_6.hir --extern 
serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
serde_ignored=output/cargo-build/libserde_ignored-0_0_3.hir --extern 

Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-15 Thread Chris Marusich
Hi Danny,

Danny Milosavljevic  writes:

> On Wed, 13 Feb 2019 20:35:51 -0800
> Chris Marusich  wrote:
>
>> I looked in the failed build directory, but I couldn't find a core
>> dump.  When I manually ran the command...
>> 
>> /gnu/store/jxq[...]-mrustc-0.8.0/bin/mrustc
>> src/tools/cargo/src/bin/cargo.rs [...]
>> 
>> ...it actually succeeded.
>
> Does that mean in an i686-linux guix environment?
>
> If so, that's very good to know and it could be a good workaround to keep 
> going!
>
> Did you source the environment-variables, too?

Here's more info about what I did.  On my x86_64-linux Guix System
machine, where the build failed, I ran the following commands:

--8<---cut here---start->8---
cd /tmp/guix-build-rust-1.19.0.drv-0
. environment-variables
cd rustc-1.19.0-src/
/gnu/store/jxq5p3mx2gavj7hws1drz3pndn87lqrl-mrustc-0.8.0/bin/mrustc 
src/tools/cargo/src/bin/cargo.rs --crate-name cargo --crate-type bin 
--crate-tag 0_20_0 -g --cfg debug_assertions -O -o output/cargo-build/cargo -L 
output/cargo-build --extern cargo=output/cargo-build/libcargo-0_20_0.hir 
--extern crates_io=output/cargo-build/libcrates_io-0_9_0.hir --extern 
crossbeam=output/cargo-build/libcrossbeam-0_2_10.hir --extern 
curl=output/cargo-build/libcurl-0_4_6.hir --extern 
docopt=output/cargo-build/libdocopt-0_7_0.hir --extern 
env_logger=output/cargo-build/libenv_logger-0_4_2.hir --extern 
error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
filetime=output/cargo-build/libfiletime-0_1_10.hir --extern 
flate2=output/cargo-build/libflate2-0_2_19.hir --extern 
fs2=output/cargo-build/libfs2-0_4_1.hir --extern 
git2=output/cargo-build/libgit2-0_6_6.hir --extern 
git2_curl=output/cargo-build/libgit2_curl-0_7_0.hir --extern 
glob=output/cargo-build/libglob-0_2_11.hir --extern 
jobserver=output/cargo-build/libjobserver-0_1_6.hir --extern 
libc=output/cargo-build/liblibc-0_2_22.hir --extern 
libgit2_sys=output/cargo-build/liblibgit2_sys-0_6_12.hir --extern 
log=output/cargo-build/liblog-0_3_7.hir --extern 
num_cpus=output/cargo-build/libnum_cpus-1_4_0.hir --extern 
rustc_serialize=output/cargo-build/librustc_serialize-0_3_24.hir --extern 
scoped_tls=output/cargo-build/libscoped_tls-0_1_0.hir --extern 
semver=output/cargo-build/libsemver-0_7_0.hir --extern 
serde=output/cargo-build/libserde-1_0_6.hir --extern 
serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
serde_ignored=output/cargo-build/libserde_ignored-0_0_3.hir --extern 
serde_json=output/cargo-build/libserde_json-1_0_2.hir --extern 
shell_escape=output/cargo-build/libshell_escape-0_1_3.hir --extern 
tar=output/cargo-build/libtar-0_4_13.hir --extern 
tempdir=output/cargo-build/libtempdir-0_3_5.hir --extern 
term=output/cargo-build/libterm-0_4_5.hir --extern 
toml=output/cargo-build/libtoml-0_4_1.hir --extern 
url=output/cargo-build/liburl-1_4_0.hir --extern 
openssl=output/cargo-build/libopenssl-0_9_12.hir -L output -L 
/gnu/store/jxq5p3mx2gavj7hws1drz3pndn87lqrl-mrustc-0.8.0/lib/mrust
--8<---cut here---end--->8---

The last command exited with exit code 0.  For your reference, I've
attached the output, also.

The mrustc program is a 32-bit executable, which makes sense since the
build was for an i686-linux system:

--8<---cut here---start->8---
$ file /gnu/store/jxq5p3mx2gavj7hws1drz3pndn87lqrl-mrustc-0.8.0/bin/mrustc
/gnu/store/jxq5p3mx2gavj7hws1drz3pndn87lqrl-mrustc-0.8.0/bin/mrustc: ELF 32-bit 
LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked, 
interpreter 
/gnu/store/qk8irm5yp2khq4dj7zcpcaa1g87pfyvw-glibc-2.28/lib/ld-linux.so.2, for 
GNU/Linux 2.6.32, stripped
--8<---cut here---end--->8---

Do I need to do something special to attempt to run this mrustc program
in "i686-linux" mode?  For example, I see that the guix-daemon sets the
Linux kernel's personality to 32 bits by invoking
personality(PER_LINUX32) in nix/libstore/build.cc.  Maybe mrustc won't
fail unless we do that first?

-- 
Chris


output.gz
Description: Binary data


signature.asc
Description: PGP signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-14 Thread Danny Milosavljevic
Hi Chris,

On Wed, 13 Feb 2019 20:35:51 -0800
Chris Marusich  wrote:

> My understanding is that "term-signal: 8" means the process (rustc) was
> terminated by signal 8 (SIGFPE on my system according to "kill -l").  Is
> that right?

According to upstream [1], it might be SIGABRT, but I see your reasoning.

> I looked in the failed build directory, but I couldn't find a core
> dump.  When I manually ran the command...
> 
> /gnu/store/jxq[...]-mrustc-0.8.0/bin/mrustc src/tools/cargo/src/bin/cargo.rs 
> [...]
> 
> ...it actually succeeded.

Does that mean in an i686-linux guix environment?

If so, that's very good to know and it could be a good workaround to keep going!

Did you source the environment-variables, too?

[1] https://github.com/thepowersgang/mrustc/issues/78#issuecomment-416073674


pgpTWTXZP6MQg.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-12 Thread Chris Marusich
Hi Danny,

> Sounds good.  I've successfully applied the patch to a clean checkout of
> Guix at the current master branch head
> (c7cf43ddec9be5389d3a2623d6414d9b55354f64).  I've kicked off a build on
> an x86_64-linux system (Guix running on a Debian foreign distro) via:
>
>   guix environment --pure guix
>   # And then, in the pure environment:
>   ./bootstrap && ./configure --localstatedir=/var && make -j 1 && echo
> built guix > /tmp/mylog && time ./pre-inst-env guix build --max-jobs=1
> --cores=1 -K -s i686-linux rust@1.19.0
>
> It's gonna take a long time to finish.  I'll let you know how it goes!

The build failed because it ran out of memory.  This machine won't work.
I've started the build on another machine with more memory, and I'll let
you know how it goes.

-- 
Chris


signature.asc
Description: PGP signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-12 Thread Chris Marusich
Hi Danny,

Danny Milosavljevic  writes:

>> > Would you have some time and a free computer to be able to build
>> > rust 1.19.0 with
>> >
>> >   ./pre-inst-env guix build -K -s i686-linux rust@1.19.0
>> >
>> > on guix master with the patch below?  
>> 
>> I have a spare computer.  It only has 2 GB of RAM and 2 GB of swap,
>> though.  Will it be enough?
>
> If you don't run anything else on it (Firefox etc), it should be
> barely enough

Sounds good.  I've successfully applied the patch to a clean checkout of
Guix at the current master branch head
(c7cf43ddec9be5389d3a2623d6414d9b55354f64).  I've kicked off a build on
an x86_64-linux system (Guix running on a Debian foreign distro) via:

  guix environment --pure guix
  # And then, in the pure environment:
  ./bootstrap && ./configure --localstatedir=/var && make -j 1 && echo built 
guix > /tmp/mylog && time ./pre-inst-env guix build --max-jobs=1 --cores=1 -K 
-s i686-linux rust@1.19.0

It's gonna take a long time to finish.  I'll let you know how it goes!

-- 
Chris


signature.asc
Description: PGP signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-12 Thread Danny Milosavljevic
Hi Chris,

On Tue, 12 Feb 2019 03:47:53 -0800
Chris Marusich  wrote:

> > Would you have some time and a free computer to be able to build rust 
> > 1.19.0 with 
> >
> >   ./pre-inst-env guix build -K -s i686-linux rust@1.19.0
> >
> > on guix master with the patch below?  
> 
> I have a spare computer.  It only has 2 GB of RAM and 2 GB of swap,
> though.  Will it be enough?

If you don't run anything else on it (Firefox etc), it should be barely enough.

> By the way, unfortunately your patch did not apply cleanly to the
> current master branch head (c86b5f1b9bdfdd478ba15804f9343feb8d9c019b).
> If you think my little computer will be able to crunch through the
> build, I'm happy to let it run if you can supply a clean patch.

Yeah, sorry, it was cut.  I've cleaned it up and attached the new version.

It should apply to master using "patch -p1 < mrustc-master.patch".
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 501736d89..78705103b 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -101,11 +101,11 @@
 (method git-fetch)
 (uri (git-reference
   (url "https://github.com/thepowersgang/mrustc.git;)
-  (commit (string-append "v" version
+  (commit "7b6fa5c6e7d6838c2479280dd3f8d14a43c13899")))
 (file-name (git-file-name name version))
 (sha256
  (base32
-  "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i"
+  "0ki5jv76gmvd0q9y2lixzn4xhy1jamba3f77bk8cz2k4ix6yx5z1"
   (outputs '("out" "cargo"))
   (build-system gnu-build-system)
   (inputs
@@ -118,6 +118,7 @@
   ,(rust-source "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"
   (arguments
`(#:test-target "local_tests"
+ #:strip-binaries? #f
  #:make-flags (list (string-append "LLVM_CONFIG="
(assoc-ref %build-inputs "llvm")
"/bin/llvm-config"))
@@ -127,6 +128,9 @@
 (lambda _
   (substitute* "Makefile"
(("shell date") "shell date -d @1"))
+  (substitute* "Makefile"
+   (("-g ") "-g3 ")
+   (("-O2") ""))
   #t))
(add-after 'patch-date 'unpack-target-compiler
  (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -184,7 +188,7 @@ safety and thread safety guarantees.")
   ;; Dual licensed.
   (license (list license:asl2.0 license:expat)
 
-(define rust-1.19
+(define-public rust-1.19
   (package
 (name "rust")
 (version "1.19.0")
@@ -308,12 +312,14 @@ test = { path = \"../libtest\" }
(setenv "CFG_VERSION" #f)
(setenv "CFG_PREFIX" #f)
(setenv "CFG_LIBDIR_RELATIVE" #f)
+   ; Fails:
(invoke (string-append rustc-bootstrap "/tools/bin/minicargo")
"src/tools/cargo" "--vendor-dir" "src/vendor"
"--output-dir" "output/cargo-build"
"-L" "output/"
"-L" (string-append rustc-bootstrap "/lib/mrust")
"-j" "1")
+   ;(invoke "eee")
;; Now use the newly-built rustc to build the libraries.
;; One day that could be replaced by:
;; (invoke "output/cargo-build/cargo" "build"


pgpV2qBot4htA.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-12 Thread Chris Marusich
Hi Danny,

Danny Milosavljevic  writes:

> Hi Chris,
>
> upstream says that compiling rust 1.19.0 works fine for them on i686 with 
> their mrustc
> master (since they have applied our variable-length integer decoding patch):
>
> https://github.com/thepowersgang/mrustc/issues/108

Good to hear they're working with us!

> Would you have some time and a free computer to be able to build rust 1.19.0 
> with 
>
>   ./pre-inst-env guix build -K -s i686-linux rust@1.19.0
>
> on guix master with the patch below?

I have a spare computer.  It only has 2 GB of RAM and 2 GB of swap,
though.  Will it be enough?

By the way, unfortunately your patch did not apply cleanly to the
current master branch head (c86b5f1b9bdfdd478ba15804f9343feb8d9c019b).
If you think my little computer will be able to crunch through the
build, I'm happy to let it run if you can supply a clean patch.

Thank you!

-- 
Chris


signature.asc
Description: PGP signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-11 Thread Danny Milosavljevic
Hi Chris,

upstream says that compiling rust 1.19.0 works fine for them on i686 with their 
mrustc
master (since they have applied our variable-length integer decoding patch):

https://github.com/thepowersgang/mrustc/issues/108

>Hmm... works for me, using gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516 on 
>linux 4.9.0-8-686-pae
>Compiling cargo ran sucessfully.

Would you have some time and a free computer to be able to build rust 1.19.0 
with 

  ./pre-inst-env guix build -K -s i686-linux rust@1.19.0

on guix master with the patch below?

My laptop is currently trying to survive the merge of staging to master and 
keeps
running out of memory if I try to start a rust build in parallel, even with 
swap.

The patch to use mrustc master is:

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index e128bb22b..f2a01ded6 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -97,17 +97,35 @@
 (package
   (name "mrustc")
   (version "0.8.0")
+  ;(source (origin
+  ;  (method git-fetch)
+  ;  (uri (git-reference
+  ;(url "https://github.com/thepowersgang/mrustc.git;)
+  ;(commit (string-append "v" version
+  ;  (file-name (git-file-name name version))
+  ;  (sha256
+  ;   (base32
+  ;"0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i"))
+  ;  (patches
+  ;   (search-patches "mrustc-0.8.0-fix-use-after-free.patch"
+  ;   
"mrustc-0.8.0-fix-variable-length-integer-receiving.patch"
+  ;   
"mrustc-0.8.0-fix-emulated-i128-multiply-divide.patch"
+  ;   
"mrustc-0.8.0-fix-i128-overflow-handling.patch"
   (source (origin
 (method git-fetch)
 (uri (git-reference
   (url "https://github.com/thepowersgang/mrustc.git;)
-  (commit (string-append "v" version
+  (commit "7b6fa5c6e7d6838c2479280dd3f8d14a43c13899")))
 (file-name (git-file-name name version))
 (sha256
  (base32
-  "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i"))
+  "0ki5jv76gmvd0q9y2lixzn4xhy1jamba3f77bk8cz2k4ix6yx5z1"))
 (patches
- (search-patches 
"mrustc-0.8.0-fix-variable-length-integer-receiving.patch"
+ (search-patches ;"mrustc-0.8.0-fix-use-after-free.patch"
+ 
;"mrustc-0.8.0-fix-variable-length-integer-receiving.patch"
+ 
;"mrustc-0.8.0-fix-emulated-i128-multiply-divide.patch"
+ 
;"mrustc-0.8.0-fix-i128-overflow-handling.patch"
+ 


Also have to make rust@1.19.0 public or use an "-e" expression.

If you don't have time, no worries, I'll eventually get to it.


pgppdubEse_rZ.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-02-05 Thread Danny Milosavljevic
Chris and I compared what gets sent by the parent on i686 (where it breaks)
vs on x86_64 (where it doesn't break): There are no differences.

The next step will  be to find out what the child process does with the data.
I suspect that the child processes' input deserializer is broken.

For reference, there are multiple invocations of the child process, so the
debugging process is as follows:

(1) ~/src/guix-staging/guix/pre-inst-env guix environment --pure rust@1.19.0 
--ad-hoc gdb less nano
(2) source /tmp/guix-build-rust-1.19.0.drv-0/environment
(3) cd /tmp/guix-build-rust-1.19.0.drv-0/rustc-1.19.0-src
(4) export MRUSTC_DUMP_PROCMACRO=/tmp/x86_64
(4) ~/.guix-profile/bin/gdb --args 
/gnu/store/pv5280j9fqzchccc37jj4n7yjsv2x4w6-mrustc-0.8.0/bin/mrustc 
src/tools/cargo/src/crates-io/lib.rs --crate-name crates_io --crate-type rlib 
--crate-tag 0_9_0 -g --cfg debug_assertions -O -o 
output/cargo-build/libcrates_io-0_9_0.hir -L output/cargo-build --extern 
curl=output/cargo-build/libcurl-0_4_6.hir --extern 
error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
serde=output/cargo-build/libserde-1_0_6.hir --extern 
serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
serde_json=output/cargo-build/libserde_json-1_0_2.hir --extern 
url=output/cargo-build/liburl-1_4_0.hir -L output -L 
/gnu/store/pv5280j9fqzchccc37jj4n7yjsv2x4w6-mrustc-0.8.0/lib/mrust
(5) Set a breakpoint on "getenv"
(6) Run
(7) Continue program 4 times at the breakpoint
(8) Inspect /tmp/x86_64

The readable part without the special characters is:

structCrate{pubname:String,pub
  description:Option,pub
 
max_version:String,}

The child process is:

output/cargo-build/libserde_derive-1_0_6.hir-plugin derive#Deserialize

The backtrace after x86_64's startup is:

#0  0x77e178f0 in getenv ()
   from /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libc.so.6
#1  0x0044a7df in _ZN3std3sys3imp2os6getenv (arg0=...)
at output/libstd.hir.o.c:69557
#2  0x0044c1fc in _ZN3std3env7_var_os (arg0=...)
at output/libstd.hir.o.c:56318
#3  0x0048789e in _ZN3std3env6var_os$aL$Rs_str$aR (arg0=...)
at output/libproc_macro.hir.o.c:5682
#4  0x0048967b in _ZN10proc_macro4main (arg0=...)
at output/libproc_macro.hir.o.c:5110
#5  0x004040f3 in _ZN19serde_derive$$1_0_612proc_macro$H4main ()
at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:35218
#6  0x004af2ec in __rust_maybe_catch_panic (
arg0=arg0@entry=0x439c10 
<_ZN3std9panicking3$H37do_call$aLfn_0_$T0$C$T0$aR>, 
arg1=arg1@entry=0x7fffc130 "\340@@", arg2=arg2@entry=0x7fffc120, 
arg3=arg3@entry=0x7fffc128) at output/libpanic_abort.hir.o.c:105
#7  0x0044d1e6 in _ZN3std9panicking3try$aL$T0$Cfn_0_$T0$aR (
arg0=arg0@entry=0x4040e0 <_ZN19serde_derive$$1_0_612proc_macro$H4main>)
at output/libstd.hir.o.c:63637
#8  0x004510e5 in _ZN3std2rt10lang_start (
arg0=arg0@entry=0x4040e0 <_ZN19serde_derive$$1_0_612proc_macro$H4main>, 
arg1=2, arg2=0x7fffc328) at output/libstd.hir.o.c:64414
#9  0x00402c14 in main (argc=, argv=)
at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:86019

The crash is reproducible on i686 by just doing:

/tmp/guix-build-rust-1.19.0.drv-5/rustc-1.19.0-src/output/cargo-build/libserde_derive-1_0_6.hir-plugin
 'derive#Deserialize' <~/i686

... without any guix environment or other preparation.

Backtrace on i686 on the crash:

#1  0xf7defa60 in raise () from 
/gnu/store/qk8irm5yp2khq4dj7zcpcaa1g87pfyvw-glibc-2.28/lib/libc.so.6
#2  0xf7df0bd7 in abort () from 
/gnu/store/qk8irm5yp2khq4dj7zcpcaa1g87pfyvw-glibc-2.28/lib/libc.so.6
#3  0xf7e2ff56 in __libc_message () from 
/gnu/store/qk8irm5yp2khq4dj7zcpcaa1g87pfyvw-glibc-2.28/lib/libc.so.6
#4  0xf7e36bbd in malloc_printerr () from 
/gnu/store/qk8irm5yp2khq4dj7zcpcaa1g87pfyvw-glibc-2.28/lib/libc.so.6
#5  0xf7e3713b in munmap_chunk () from 
/gnu/store/qk8irm5yp2khq4dj7zcpcaa1g87pfyvw-glibc-2.28/lib/libc.so.6
#6  0x0804e63e in 
_ZRK$aL_ZN5alloc7raw_vec6RawVec$aLu8$aR_as__ZN4core3ops4Drop$aR4drop 
(arg0=0x815c300) at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:61640
#7  _ZRI$aL_ZN5alloc7raw_vec6RawVec$aLu8$aR$aR11$Hdrop_glue (rv=0x815c300) at 
output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:175
#8  _ZRI$aL_ZN11collections3vec3Vec$aLu8$aR$aR11$Hdrop_glue (rv=0x815c300) at 
output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:185
#9  _ZRI$aL_ZN11collections6string6String$aR11$Hdrop_glue (rv=0x815c300) at 
output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:192
#10 _ZRI$aL_ZN12syn$$0_11_115ident5Ident$aR11$Hdrop_glue (rv=0x815c300) at 
output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:199
#11 
_ZRI$aL_ZN4core6option12Option$HSome$aL_ZN12syn$$0_11_115ident5Ident$aR$aR11$Hdrop_glue
 (rv=0x815c300) at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:2304
#12 

Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-01-30 Thread Mark H Weaver
Hi Ludovic,

Ludovic Courtès  writes:

> Rust fails to build on i686 on ‘staging’, so I don’t know if it’s
> deterministic (the “unexpected EOF” reminds me of parallel build issues
> with half-baked makefiles):
>
> BUILDING crates_io from crates-io v0.9.0 with features []
>> /gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/bin/mrustc 
>> src/tools/cargo/src/crates-io/lib.rs --crate-name crates_io --crate-type 
>> rlib --crate-tag 0_9_0 -g --cfg debug_assertions -O -o 
>> output/cargo-build/libcrates_io-0_9_0.hir -L output/cargo-build --extern 
>> curl=output/cargo-build/libcurl-0_4_6.hir --extern 
>> error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
>> serde=output/cargo-build/libserde-1_0_6.hir --extern 
>> serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
>> serde_json=output/cargo-build/libserde_json-1_0_2.hir --extern 
>> url=output/cargo-build/liburl-1_4_0.hir -L output -L 
>> /gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/lib/mrust
> munmap_chunk(): invalid pointer
> src/tools/cargo/src/crates-io/lib.rs:65: BUG:src/expand/proc_macro.cpp:941: 
> Unexpected EOF while reading from child process
> BUILD FAILED

FYI, this is not specific to the 'staging' branch.  The same error has
been happening on our 'master' branch since at least September 2018:

  https://hydra.gnu.org/job/gnu/master/rust-1.20.0.i686-linux/all

  Mark



Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-01-30 Thread Danny Milosavljevic
Hi Ludo,

running gdb in an i686 transparent qemu emulation gives me:

$ gdb --args 
/gnu/store/gpc2m2f79rsgy15m65x0s5av7a41rp8b-mrustc-0.8.0/bin/mrustc 
src/tools/cargo/src/crates-io/lib.rs --crate-name crates_io --crate-type rlib 
--crate-tag 0_9_0 -g --cfg debug_assertions -O -o 
output/cargo-build/libcrates_io-0_9_0.hir -L output/cargo-build --extern 
curl=output/cargo-build/libcurl-0_4_6.hir --extern 
error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
serde=output/cargo-build/libserde-1_0_6.hir --extern 
serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
serde_json=output/cargo-build/libserde_json-1_0_2.hir --extern 
url=output/cargo-build/liburl-1_4_0.hir -L output -L 
/gnu/store/gpc2m2f79rsgy15m65x0s5av7a41rp8b-mrustc-0.8.0/lib/mrust
(gdb) set follow-fork-mode child
(gdb) r
Starting program: 
/gnu/store/gpc2m2f79rsgy15m65x0s5av7a41rp8b-mrustc-0.8.0/bin/mrustc 
src/tools/cargo/src/crates-io/lib.rs --crate-name crates_io --crate-type rlib 
--crate-tag 0_9_0 -g --cfg debug_assertions -O -o 
output/cargo-build/libcrates_io-0_9_0.hir -L output/cargo-build --extern 
curl=output/cargo-build/libcurl-0_4_6.hir --extern 
error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
serde=output/cargo-build/libserde-1_0_6.hir --extern 
serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
serde_json=output/cargo-build/libserde_json-1_0_2.hir --extern 
url=output/cargo-build/liburl-1_4_0.hir -L output -L 
/gnu/store/gpc2m2f79rsgy15m65x0s5av7a41rp8b-mrustc-0.8.0/lib/mrust
Parse: V V V
(0.01 s) Parse: DONE
LoadCrates: V V V
(2.33 s) LoadCrates: DONE
Expand: V V V
[Attaching after process 7067 vfork to child process 7071]
[New inferior 2 (process 7071)]
[Detaching vfork parent process 7067 after child exec]
[Inferior 1 (process 7067) detached]
process 7071 is executing new program: 
/tmp/guix-build-rust-1.19.0.drv-6/rustc-1.19.0-src/output/cargo-build/libserde_derive-1_0_6.hir-plugin
[Thread debugging using libthread_db enabled]
Using host libthread_db library 
"/gnu/store/qk8irm5yp2khq4dj7zcpcaa1g87pfyvw-glibc-2.28/lib/libthread_db.so.1".
munmap_chunk(): invalid pointer

Thread 2.1 "libserde_derive" received signal SIGABRT, Aborted.
[Switching to Thread 0xf7c9de80 (LWP 7071)]
0xf7fd4b59 in ?? ()
(gdb) bt
#0  0xf7fd4b59 in ?? ()
#1  0x in ?? ()

I've reported it upstream as https://github.com/thepowersgang/mrustc/issues/108 
.


pgpdfckcmieLx.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-01-29 Thread Ludovic Courtès
Hi Danny,

Danny Milosavljevic  skribis:

> On Mon, 28 Jan 2019 15:39:33 +0100
> Ludovic Courtès  wrote:
>> > /gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/bin/mrustc[...]
>> munmap_chunk(): invalid pointer
>
> Maybe the above causes
>
>> src/tools/cargo/src/crates-io/lib.rs:65: BUG:src/expand/proc_macro.cpp:941: 
>> Unexpected EOF while reading from child process
>
> this.
>
> Might be a memory double-free.  Exactly the kind of thing that Rust is 
> supposed
> to prevent is in the Rust compiler in C++ - well, at least the motivation for
> having Rust is clear now ;-)

Heh, sounds like it.

> Can you try just
>
> $ /gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/bin/mrustc 
> src/tools/cargo/src/crates-io/lib.rs --crate-name crates_io --crate-type rlib 
> --crate-tag 0_9_0 -g --cfg debug_assertions -O -o 
> output/cargo-build/libcrates_io-0_9_0.hir -L output/cargo-build --extern 
> curl=output/cargo-build/libcurl-0_4_6.hir --extern 
> error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
> serde=output/cargo-build/libserde-1_0_6.hir --extern 
> serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
> serde_json=output/cargo-build/libserde_json-1_0_2.hir --extern 
> url=output/cargo-build/liburl-1_4_0.hir -L output -L 
> /gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/lib/mrust
>
> in the build-failed kept source? (possibly with "ulimit -c unlimited" so it 
> dumps core. mrustc is a normal C++ program, so normal debugging ways apply)
>
> Or do I have access to the machine so I can do it?

I don’t know but you could try:

  guix build rust@1.19 -s i686-linux -K

on your x86_64 machine from ‘staging’, and hopefully you’ll get that
error too.

> Possible use-after free fix in mrustc commits:
>
> https://github.com/thepowersgang/mrustc/commit/a51eea542ae086687ea2c4cb09321785f5cc6269

Could be!  We know what to try next.

Thanks for investigating!

Ludo’.



Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-01-28 Thread Danny Milosavljevic
Hi Ricardo,

On Mon, 28 Jan 2019 19:41:50 +0100
Ricardo Wurmus  wrote:

> Did you run “make clean-go” before?

Nope.  Did so now - the build of guix staging works now.

Thanks!


pgpaROXXhhog4.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-01-28 Thread Ricardo Wurmus


Danny Milosavljevic  writes:

> Something more serious seems to be up with guix staging because I get,
> on trying "make" (after "./configure --localstatedir=/var") inside guix 
> staging
> (commit df09e1d6e71f68a8fb44bcc9f13e625f9f9701a5) on x86_64:
>
> Backtrace:
> In ice-9/boot-9.scm:
>222:29 19 (map1 _)
>222:29 18 (map1 _)
>222:29 17 (map1 _)
>222:29 16 (map1 _)
>222:29 15 (map1 _)
>222:29 14 (map1 _)
>222:29 13 (map1 (((gnu services base)) ((gnu bootloader)) ((…)) …))
>222:29 12 (map1 (((gnu bootloader)) ((gnu system shadow)) ((…)) …))
>222:29 11 (map1 (((gnu system shadow)) ((gnu system nss)) ((…)) …))
>222:29 10 (map1 (((gnu system nss)) ((gnu system locale)) ((…)) …))
>222:17  9 (map1 (((gnu system locale)) ((gnu system pam)) ((…)) …))
>   2800:17  8 (resolve-interface (gnu system locale) #:select _ #:hide …)
> In ice-9/threads.scm:
> 390:8  7 (_ _)
> In ice-9/boot-9.scm:
>   2726:13  6 (_)
> In ice-9/threads.scm:
> 390:8  5 (_ _)
> In ice-9/boot-9.scm:
>   2994:20  4 (_)
>2312:4  3 (save-module-excursion #)
>   3014:26  2 (_)
> In unknown file:
>1 (primitive-load-path "gnu/system/locale" #)
> In gnu/system/locale.scm:
> 124:0  0 (_)
>
> gnu/system/locale.scm:124:0: In procedure private-lookup: No variable bound 
> to glibc-for-target in module (gnu packages base)

Did you run “make clean-go” before?

-- 
Ricardo




Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-01-28 Thread Danny Milosavljevic
Something more serious seems to be up with guix staging because I get,
on trying "make" (after "./configure --localstatedir=/var") inside guix staging
(commit df09e1d6e71f68a8fb44bcc9f13e625f9f9701a5) on x86_64:

Backtrace:
In ice-9/boot-9.scm:
   222:29 19 (map1 _)
   222:29 18 (map1 _)
   222:29 17 (map1 _)
   222:29 16 (map1 _)
   222:29 15 (map1 _)
   222:29 14 (map1 _)
   222:29 13 (map1 (((gnu services base)) ((gnu bootloader)) ((…)) …))
   222:29 12 (map1 (((gnu bootloader)) ((gnu system shadow)) ((…)) …))
   222:29 11 (map1 (((gnu system shadow)) ((gnu system nss)) ((…)) …))
   222:29 10 (map1 (((gnu system nss)) ((gnu system locale)) ((…)) …))
   222:17  9 (map1 (((gnu system locale)) ((gnu system pam)) ((…)) …))
  2800:17  8 (resolve-interface (gnu system locale) #:select _ #:hide …)
In ice-9/threads.scm:
390:8  7 (_ _)
In ice-9/boot-9.scm:
  2726:13  6 (_)
In ice-9/threads.scm:
390:8  5 (_ _)
In ice-9/boot-9.scm:
  2994:20  4 (_)
   2312:4  3 (save-module-excursion #)
  3014:26  2 (_)
In unknown file:
   1 (primitive-load-path "gnu/system/locale" #)
In gnu/system/locale.scm:
124:0  0 (_)

gnu/system/locale.scm:124:0: In procedure private-lookup: No variable bound to 
glibc-for-target in module (gnu packages base)



pgpV12eJhYU7P.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-01-28 Thread Danny Milosavljevic
Possible use-after free fix in mrustc commits:

https://github.com/thepowersgang/mrustc/commit/a51eea542ae086687ea2c4cb09321785f5cc6269

This was not in the mrustc 0.8.0 release yet.


pgp12KN34YAvz.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-01-28 Thread Danny Milosavljevic
Hi Ludo,

on second thought:

On Mon, 28 Jan 2019 15:39:33 +0100
Ludovic Courtès  wrote:
> > /gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/bin/mrustc[...]
> munmap_chunk(): invalid pointer

Maybe the above causes

> src/tools/cargo/src/crates-io/lib.rs:65: BUG:src/expand/proc_macro.cpp:941: 
> Unexpected EOF while reading from child process

this.

Might be a memory double-free.  Exactly the kind of thing that Rust is supposed
to prevent is in the Rust compiler in C++ - well, at least the motivation for
having Rust is clear now ;-)

Can you try just

$ /gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/bin/mrustc 
src/tools/cargo/src/crates-io/lib.rs --crate-name crates_io --crate-type rlib 
--crate-tag 0_9_0 -g --cfg debug_assertions -O -o 
output/cargo-build/libcrates_io-0_9_0.hir -L output/cargo-build --extern 
curl=output/cargo-build/libcurl-0_4_6.hir --extern 
error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
serde=output/cargo-build/libserde-1_0_6.hir --extern 
serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
serde_json=output/cargo-build/libserde_json-1_0_2.hir --extern 
url=output/cargo-build/liburl-1_4_0.hir -L output -L 
/gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/lib/mrust

in the build-failed kept source? (possibly with "ulimit -c unlimited" so it 
dumps core. mrustc is a normal C++ program, so normal debugging ways apply)

Or do I have access to the machine so I can do it?


pgpJNpn6eM5S6.pgp
Description: OpenPGP digital signature


Re: Rust 1.19 fails to build on i686 on ‘staging’

2019-01-28 Thread Danny Milosavljevic
Hi Ludo,

> while reading from child process
 ^

Is that a real Pentium, or qemu on x86_64?  We had some problems with
spawning child processes on the qemu transparent emulator.


pgphnzPYl3GKD.pgp
Description: OpenPGP digital signature


Rust 1.19 fails to build on i686 on ‘staging’

2019-01-28 Thread Ludovic Courtès
Hello,

Rust fails to build on i686 on ‘staging’, so I don’t know if it’s
deterministic (the “unexpected EOF” reminds me of parallel build issues
with half-baked makefiles):

--8<---cut here---start->8---
BUILDING crates_io from crates-io v0.9.0 with features []
> /gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/bin/mrustc 
> src/tools/cargo/src/crates-io/lib.rs --crate-name crates_io --crate-type rlib 
> --crate-tag 0_9_0 -g --cfg debug_assertions -O -o 
> output/cargo-build/libcrates_io-0_9_0.hir -L output/cargo-build --extern 
> curl=output/cargo-build/libcurl-0_4_6.hir --extern 
> error_chain=output/cargo-build/liberror_chain-0_10_0.hir --extern 
> serde=output/cargo-build/libserde-1_0_6.hir --extern 
> serde_derive=output/cargo-build/libserde_derive-1_0_6.hir --extern 
> serde_json=output/cargo-build/libserde_json-1_0_2.hir --extern 
> url=output/cargo-build/liburl-1_4_0.hir -L output -L 
> /gnu/store/fw4yy7cgb5ahs9s2ir00bawnsl5zj7db-mrustc-0.8.0/lib/mrust
munmap_chunk(): invalid pointer
src/tools/cargo/src/crates-io/lib.rs:65: BUG:src/expand/proc_macro.cpp:941: 
Unexpected EOF while reading from child process
BUILD FAILED
Backtrace:
   5 (primitive-load "/gnu/store/g1pwkbic91004khxrs8qfnhszs7…")
In ice-9/eval.scm:
   191:35  4 (_ _)
In srfi/srfi-1.scm:
   863:16  3 (every1 # …)
In 
/gnu/store/w8ki740gbcibbifmljwjpd0vmix5jw8q-module-import/guix/build/gnu-build-system.scm:
   799:28  2 (_ _)
In ice-9/eval.scm:
619:8  1 (_ #(#(#(#) (# # …) …) …))
In 
/gnu/store/w8ki740gbcibbifmljwjpd0vmix5jw8q-module-import/guix/build/utils.scm:
616:6  0 (invoke _ . _)

/gnu/store/w8ki740gbcibbifmljwjpd0vmix5jw8q-module-import/guix/build/utils.scm:616:6:
 In procedure invoke:
Throw to key `srfi-34' with args `(#)'.
builder for `/gnu/store/380l4b9qdz9knbpnhby0npacmgihbggf-rust-1.19.0.drv' 
failed with exit code 1
--8<---cut here---end--->8---

(From 
.)

Thoughts?

Ludo’.