[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Rust 1.19 fails to build on i686 on ‘staging’
From: |
Danny Milosavljevic |
Subject: |
Re: Rust 1.19 fails to build on i686 on ‘staging’ |
Date: |
Tue, 5 Feb 2019 12:28:39 +0100 |
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 address@hidden
--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<String,>,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 0x00007ffff7e178f0 in getenv ()
from /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libc.so.6
#1 0x000000000044a7df in _ZN3std3sys3imp2os6getenv (arg0=...)
at output/libstd.hir.o.c:69557
#2 0x000000000044c1fc in _ZN3std3env7_var_os (arg0=...)
at output/libstd.hir.o.c:56318
#3 0x000000000048789e in _ZN3std3env6var_os$aL$Rs_str$aR (arg0=...)
at output/libproc_macro.hir.o.c:5682
#4 0x000000000048967b in _ZN10proc_macro4main (arg0=...)
at output/libproc_macro.hir.o.c:5110
#5 0x00000000004040f3 in _ZN19serde_derive$$1_0_612proc_macro$H4main ()
at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:35218
#6 0x00000000004af2ec in __rust_maybe_catch_panic (
address@hidden <_ZN3std9panicking3$H37do_call$aLfn_0_$T0$C$T0$aR>,
address@hidden "\340@@", address@hidden,
address@hidden) at output/libpanic_abort.hir.o.c:105
#7 0x000000000044d1e6 in _ZN3std9panicking3try$aL$T0$Cfn_0_$T0$aR (
address@hidden <_ZN19serde_derive$$1_0_612proc_macro$H4main>)
at output/libstd.hir.o.c:63637
#8 0x00000000004510e5 in _ZN3std2rt10lang_start (
address@hidden <_ZN19serde_derive$$1_0_612proc_macro$H4main>,
arg1=2, arg2=0x7fffffffc328) at output/libstd.hir.o.c:64414
#9 0x0000000000402c14 in main (argc=<optimized out>, argv=<optimized out>)
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
_ZRI$aL_ZN4core6option6Option$aL_ZN12syn$$0_11_115ident5Ident$aR$aR11$Hdrop_glue
(rv=0x815c300) at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:2313
#13 _ZRI$aL_ZN30serde_derive_internals$$0_15_03ast5Field$aR11$Hdrop_glue
(rv=0x815c300) at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:2350
#14
_ZRK$aL_ZN11collections3vec3Vec$aL_ZN30serde_derive_internals$$0_15_03ast5Field$aR_as__ZN4core3ops4Drop$aR4drop
(arg0=0xffffc47c, address@hidden) at
output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:64862
#15
_ZRI$aL_ZN11collections3vec3Vec$aL_ZN30serde_derive_internals$$0_15_03ast5Field$aR$aR11$Hdrop_glue
(address@hidden) at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:1843
#16 0x0804e758 in
_ZRI$aL_ZN30serde_derive_internals$$0_15_03ast12Body$HStruct$aR11$Hdrop_glue
(rv=0xffffc478) at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:1852
#17 _ZRI$aL_ZN30serde_derive_internals$$0_15_03ast4Body$aR11$Hdrop_glue
(rv=0xffffc478) at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:1868
#18 _ZRI$aL_ZN30serde_derive_internals$$0_15_03ast9Container$aR11$Hdrop_glue
(address@hidden) at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:1882
#19 0x08070393 in _ZN19serde_derive$$1_0_62de25expand_derive_deserialize
(arg0=0xffffc57c) at output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:34299
#20 0x080708a1 in _ZN19serde_derive$$1_0_618derive_deserialize (arg0=...) at
output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:35190
#21 0x080eeb83 in _ZN10proc_macro4main (arg0=...) at
output/libproc_macro.hir.o.c:5239
#22 0x0804b114 in _ZN19serde_derive$$1_0_612proc_macro$H4main () at
output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:35286
#23 0x080eb1fb in __rust_maybe_catch_panic (arg0=0x80bcb20
<_ZN3std9panicking3$H37do_call$aLfn_0_$T0$C$T0$aR>, arg1=0xffffc7b4 "",
arg2=0xffffc7ac, arg3=0xffffc7b0) at output/libpanic_abort.hir.o.c:142
#24 0x080d052a in _ZN3std9panicking3try$aL$T0$Cfn_0_$T0$aR (arg0=0x804b100
<_ZN19serde_derive$$1_0_612proc_macro$H4main>) at output/libstd.hir.o.c:63801
#25 0x080d44f3 in _ZN3std2rt10lang_start (arg0=0x804b100
<_ZN19serde_derive$$1_0_612proc_macro$H4main>, arg1=2, arg2=0xffffc904) at
output/libstd.hir.o.c:64578
#26 0x08049bc0 in main (argc=2, argv=0xffffc904) at
output/cargo-build/libserde_derive-1_0_6.hir-plugin.c:86165
#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
warning: Source file is more recent than executable.
61640 var1 = true; // Local(1) = Constant(true)
(gdb) l 61640
61635 tUNIT var2; // ()
61636 struct
s__ZN5alloc7raw_vec6RawVec$aL_ZN30serde_derive_internals$$0_15_03ast7Variant$aR
*var3; //
&::"alloc"::raw_vec::RawVec<::"serde_derive_internals-0_15_0"::ast::Variant/*S*/,>/*S*/
61637 uint8_t *var4; // *mut u8
61638 struct s__ZN30serde_derive_internals$$0_15_03ast7Variant *var5;
// *mut ::"serde_derive_internals-0_15_0"::ast::Variant/*S*/
61639 var0 = 0x70ull; // Local(0) = Constant(112 usize)
61640 !! var1 = true; // Local(1) = Constant(true)
61641 var1 = arg0->_1 != 0x0ull; // Local(1) = BinOp(Field(1,
Deref(Argument(0))) NE 0 usize)
61642 if(var1) goto bb1; else goto bb2;
61643 // ^ If( Local(1) : 1, 2)
61644 bb1:
i686
Description: Binary data
x86_64
Description: Binary data
pgpaKIyywsLIF.pgp
Description: OpenPGP digital signature
- Re: Rust 1.19 fails to build on i686 on ‘staging’,
Danny Milosavljevic <=
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Danny Milosavljevic, 2019/02/05
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Danny Milosavljevic, 2019/02/11
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Chris Marusich, 2019/02/12
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Danny Milosavljevic, 2019/02/12
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Chris Marusich, 2019/02/12
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Chris Marusich, 2019/02/13
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Chris Marusich, 2019/02/13
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Danny Milosavljevic, 2019/02/14
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Chris Marusich, 2019/02/15
- Re: Rust 1.19 fails to build on i686 on ‘staging’, Danny Milosavljevic, 2019/02/15