guix-devel
[Top][All Lists]
Advanced

[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:

Attachment: i686
Description: Binary data

Attachment: x86_64
Description: Binary data

Attachment: pgpaKIyywsLIF.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]