New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove dependency on shell32.dll #56568

Merged
merged 7 commits into from Dec 14, 2018

Conversation

Projects
None yet
10 participants
@notriddle
Contributor

notriddle commented Dec 6, 2018

Closes #56510 if it works on MinGW (I've only tested it on MSVC).

@rust-highfive

This comment has been minimized.

Collaborator

rust-highfive commented Dec 6, 2018

r? @dtolnay

(rust_highfive has picked a reviewer for you, use r? to override)

@Mark-Simulacrum

This comment has been minimized.

Member

Mark-Simulacrum commented Dec 6, 2018

It'd be good to also run this on Windows a couple times to attempt to ascertain performance impact on our tests, though we could also just land it and see what AppVeyor looks like over the next dozen builds.

r? @alexcrichton

@rust-highfive rust-highfive assigned alexcrichton and unassigned dtolnay Dec 6, 2018

@notriddle

This comment has been minimized.

Contributor

notriddle commented Dec 6, 2018

micha@DESKTOP-IIQA1VP MINGW64 ~/IdeaProjects/rust (master)
$ ldd build/x86_64-pc-windows-msvc/stage1-std/x86_64-pc-windows-msvc/release/std.dll
        ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffaa7f10000)
        KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffaa6cc0000)
        KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7ffaa44d0000)
        ADVAPI32.dll => /c/WINDOWS/System32/ADVAPI32.dll (0x7ffaa7510000)
        msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7ffaa56b0000)
        sechost.dll => /c/WINDOWS/System32/sechost.dll (0x7ffaa7620000)
        RPCRT4.dll => /c/WINDOWS/System32/RPCRT4.dll (0x7ffaa5750000)
        WS2_32.dll => /c/WINDOWS/System32/WS2_32.dll (0x7ffaa6ef0000)
        USERENV.dll => /c/WINDOWS/SYSTEM32/USERENV.dll (0x7ffaa4150000)
        ucrtbase.dll => /c/WINDOWS/System32/ucrtbase.dll (0x7ffaa52a0000)
        profapi.dll => /c/WINDOWS/System32/profapi.dll (0x7ffaa4240000)
        CRYPTBASE.DLL => /c/WINDOWS/SYSTEM32/CRYPTBASE.DLL (0x7ffaa3b50000)
        bcryptPrimitives.dll => /c/WINDOWS/System32/bcryptPrimitives.dll (0x7ffaa4970000)

micha@DESKTOP-IIQA1VP MINGW64 ~/IdeaProjects/rust (master)
$ ldd ~/.rustup/toolchains/stable-x86_64-pc-windows-msvc/lib/rustlib/x86_64-pc-windows-msvc/lib/std-66ce4ddf5a45ca83.dll
        ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffaa7f10000)
        KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffaa6cc0000)
        KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7ffaa44d0000)
        ADVAPI32.dll => /c/WINDOWS/System32/ADVAPI32.dll (0x7ffaa7510000)
        msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7ffaa56b0000)
        sechost.dll => /c/WINDOWS/System32/sechost.dll (0x7ffaa7620000)
        RPCRT4.dll => /c/WINDOWS/System32/RPCRT4.dll (0x7ffaa5750000)
        WS2_32.dll => /c/WINDOWS/System32/WS2_32.dll (0x7ffaa6ef0000)
        SHELL32.dll => /c/WINDOWS/System32/SHELL32.dll (0x7ffaa5880000)
        cfgmgr32.dll => /c/WINDOWS/System32/cfgmgr32.dll (0x7ffaa47b0000)
        ucrtbase.dll => /c/WINDOWS/System32/ucrtbase.dll (0x7ffaa52a0000)
        USERENV.dll => /c/WINDOWS/SYSTEM32/USERENV.dll (0x7ffaa4150000)
        shcore.dll => /c/WINDOWS/System32/shcore.dll (0x7ffaa5530000)
        combase.dll => /c/WINDOWS/System32/combase.dll (0x7ffaa7b90000)
        bcryptPrimitives.dll => /c/WINDOWS/System32/bcryptPrimitives.dll (0x7ffaa4970000)
        windows.storage.dll => /c/WINDOWS/System32/windows.storage.dll (0x7ffaa49f0000)
        shlwapi.dll => /c/WINDOWS/System32/shlwapi.dll (0x7ffaa7aa0000)
        GDI32.dll => /c/WINDOWS/System32/GDI32.dll (0x7ffaa6e40000)
        gdi32full.dll => /c/WINDOWS/System32/gdi32full.dll (0x7ffaa5100000)
        msvcp_win.dll => /c/WINDOWS/System32/msvcp_win.dll (0x7ffaa48d0000)
        profapi.dll => /c/WINDOWS/System32/profapi.dll (0x7ffaa4240000)
        USER32.dll => /c/WINDOWS/System32/USER32.dll (0x7ffaa53a0000)
        win32u.dll => /c/WINDOWS/System32/win32u.dll (0x7ffaa4800000)
        kernel.appcore.dll => /c/WINDOWS/System32/kernel.appcore.dll (0x7ffaa4270000)
        powrprof.dll => /c/WINDOWS/System32/powrprof.dll (0x7ffaa4290000)
        FLTLIB.DLL => /c/WINDOWS/System32/FLTLIB.DLL (0x7ffaa4260000)
        CRYPTBASE.DLL => /c/WINDOWS/SYSTEM32/CRYPTBASE.DLL (0x7ffaa3b50000)
        IMM32.DLL => /c/WINDOWS/System32/IMM32.DLL (0x7ffaa7b00000)
@rust-highfive

This comment was marked as outdated.

Collaborator

rust-highfive commented Dec 6, 2018

The job x86_64-gnu-llvm-5.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:32db2886:start=1544121600803343223,finish=1544121694354286547,duration=93550943324
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#Pull-Requests-and-Security-Restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
Setting environment variables from .travis.yml
$ export IMAGE=x86_64-gnu-llvm-5.0
---

[00:03:13] travis_fold:start:tidy
travis_time:start:tidy
tidy check
[00:03:14] tidy error: /checkout/src/libstd/sys/windows/args.rs: missing trailing newline
[00:03:15] some tidy checks failed
[00:03:15] 
[00:03:15] 
[00:03:15] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:03:15] 
[00:03:15] 
[00:03:15] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:03:15] Build completed unsuccessfully in 0:00:56
[00:03:15] Build completed unsuccessfully in 0:00:56
[00:03:15] Makefile:79: recipe for target 'tidy' failed
[00:03:15] make: *** [tidy] Error 1
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:106db56c
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Thu Dec  6 18:45:00 UTC 2018
---
travis_time:end:0a0772c0:start=1544121900495964326,finish=1544121900501127690,duration=5163364
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:00c84012
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:05764c38
travis_time:start:05764c38
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:1bb61986
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@alexcrichton

Thanks for this! Naturally my biggest worry here is that this may not be compatible with the previous API call, so we need to be super careful. The documentation for CommandLineToArgvW says some things like:

However, if lpCmdLine starts with any amount of whitespace, CommandLineToArgvW will consider the first argument to be an empty string. Excess whitespace at the end of lpCmdLine is ignored.

but that may not be handled here?

I think this otherwise looks pretty equivalent though. Could this perhaps be tested locally more rigorously? Could the output of CommandLineToArgvW be compared to this implementation for a number of procedurally generated inputs?

Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
@pitdicker

This comment has been minimized.

Contributor

pitdicker commented Dec 7, 2018

Does it help to compare the implementation in Wine and ReactOS? https://doxygen.reactos.org/da/da5/shell32__main_8c_source.html

@nagisa

This comment has been minimized.

Contributor

nagisa commented Dec 7, 2018

Seems like a great thing to throw at a fuzzer of some sort for a day or two, before it is merged.

Among other things this would not only verify the correctness of the code, but also give considerable degree of confidence about the equivalence of the function(s).

@rust-highfive

This comment was marked as outdated.

Collaborator

rust-highfive commented Dec 7, 2018

The job x86_64-gnu-llvm-5.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:21d4c5bc:start=1544223775676210583,finish=1544223862160348909,duration=86484138326
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#Pull-Requests-and-Security-Restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
Setting environment variables from .travis.yml
$ export IMAGE=x86_64-gnu-llvm-5.0
---

[00:03:23] travis_fold:start:tidy
travis_time:start:tidy
tidy check
[00:03:24] tidy error: /checkout/src/libstd/sys/windows/args.rs: missing trailing newline
[00:03:25] some tidy checks failed
[00:03:25] 
[00:03:25] 
[00:03:25] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:03:25] 
[00:03:25] 
[00:03:25] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:03:25] Build completed unsuccessfully in 0:00:56
[00:03:25] Build completed unsuccessfully in 0:00:56
[00:03:25] make: *** [tidy] Error 1
[00:03:25] Makefile:79: recipe for target 'tidy' failed
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:0a330d47
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Fri Dec  7 23:07:56 UTC 2018
---
travis_time:end:0cf34c1f:start=1544224076742011176,finish=1544224076747203964,duration=5192788
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:00cb4720
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:00007543
travis_time:start:00007543
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:080940cc
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@notriddle

This comment has been minimized.

Contributor

notriddle commented Dec 8, 2018

Okay, here's a test harness that I put together to compare the behavior of the two (it is exhaustive, rather than random, so it should be pretty thorough).

https://gist.github.com/notriddle/dde431930c392e428055b2dc22e638f5

https://paste.gg/p/anonymous/47d6ed5f5bd549168b1c69c799825223

And, yeah, I've found several inconsistencies. The ReactOS code was also helpful for figuring out what was wrong; thanks @pitdicker !

Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
@rust-highfive

This comment was marked as outdated.

Collaborator

rust-highfive commented Dec 8, 2018

The job x86_64-gnu-llvm-5.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:168ae205:start=1544303276432711801,finish=1544303332585210561,duration=56152498760
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#Pull-Requests-and-Security-Restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
Setting environment variables from .travis.yml
$ export IMAGE=x86_64-gnu-llvm-5.0
---

[00:03:19] travis_fold:start:tidy
travis_time:start:tidy
tidy check
[00:03:19] tidy error: /checkout/src/libstd/sys/windows/args.rs:38: line longer than 100 chars
[00:03:19] tidy error: /checkout/src/libstd/sys/windows/args.rs:55: line longer than 100 chars
[00:03:19] tidy error: /checkout/src/libstd/sys/windows/args.rs:234: line longer than 100 chars
[00:03:19] tidy error: /checkout/src/libstd/sys/windows/args.rs:276: line longer than 100 chars
[00:03:19] tidy error: /checkout/src/libstd/sys/windows/args.rs: missing trailing newline
[00:03:20] some tidy checks failed
[00:03:20] 
[00:03:20] 
[00:03:20] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:03:20] 
[00:03:20] 
[00:03:20] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:03:20] Build completed unsuccessfully in 0:00:57
[00:03:20] Build completed unsuccessfully in 0:00:57
[00:03:20] Makefile:79: recipe for target 'tidy' failed
[00:03:20] make: *** [tidy] Error 1
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:0009a59c
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Sat Dec  8 21:12:23 UTC 2018
---
travis_time:end:296b79c6:start=1544303543748301151,finish=1544303543754658719,duration=6357568
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:021bf028
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:0f675a04
travis_time:start:0f675a04
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:058b4290
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@rust-highfive

This comment was marked as outdated.

Collaborator

rust-highfive commented Dec 8, 2018

The job x86_64-gnu-llvm-5.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:002e2168:start=1544310664639759615,finish=1544310731686975554,duration=67047215939
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#Pull-Requests-and-Security-Restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
Setting environment variables from .travis.yml
$ export IMAGE=x86_64-gnu-llvm-5.0
---

[00:03:47] travis_fold:start:tidy
travis_time:start:tidy
tidy check
[00:03:47] tidy error: /checkout/src/libstd/sys/windows/args.rs:45: line longer than 100 chars
[00:03:47] tidy error: /checkout/src/libstd/sys/windows/args.rs:224: line longer than 100 chars
[00:03:47] tidy error: /checkout/src/libstd/sys/windows/args.rs:266: line longer than 100 chars
[00:03:47] tidy error: /checkout/src/libstd/sys/windows/args.rs: missing trailing newline
[00:03:48] 
[00:03:48] 
[00:03:48] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:03:48] 
[00:03:48] 
[00:03:48] some tidy checks failed
[00:03:48] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:03:48] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:03:48] Build completed unsuccessfully in 0:01:00
[00:03:48] make: *** [tidy] Error 1
[00:03:48] Makefile:79: recipe for target 'tidy' failed
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:128bf5bc
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Sat Dec  8 23:16:10 UTC 2018
---
travis_time:end:0d0ecca0:start=1544310970629974320,finish=1544310970636492318,duration=6517998
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:01424e73
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:03b3dc31
travis_time:start:03b3dc31
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:04509466
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@rust-highfive

This comment was marked as outdated.

Collaborator

rust-highfive commented Dec 8, 2018

The job x86_64-gnu-llvm-5.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:13db7aa8:start=1544311766304936537,finish=1544311822167540800,duration=55862604263
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#Pull-Requests-and-Security-Restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
Setting environment variables from .travis.yml
$ export IMAGE=x86_64-gnu-llvm-5.0
---

[00:03:27] travis_fold:start:tidy
travis_time:start:tidy
tidy check
[00:03:28] tidy error: /checkout/src/libstd/sys/windows/args.rs: missing trailing newline
[00:03:29] some tidy checks failed
[00:03:29] 
[00:03:29] 
[00:03:29] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:03:29] 
[00:03:29] 
[00:03:29] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:03:29] Build completed unsuccessfully in 0:00:59
[00:03:29] Build completed unsuccessfully in 0:00:59
[00:03:29] make: *** [tidy] Error 1
[00:03:29] Makefile:79: recipe for target 'tidy' failed
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:00ffe160
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Sat Dec  8 23:34:00 UTC 2018
---
travis_time:end:009af2ff:start=1544312040439624140,finish=1544312040446883148,duration=7259008
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:0e8c65e3
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:00a78b68
travis_time:start:00a78b68
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:08eb509d
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@notriddle

This comment has been minimized.

Contributor

notriddle commented Dec 9, 2018

ucs_2=[97, 32, 34, 1, 34, 34, 0]
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `["a", "\u{1}\""]`,
 right: `["a", "\u{1}"]`', .\test_parser.rs:215:25

Well, there's another thing I need to figure out.

@notriddle notriddle force-pushed the notriddle:master branch 2 times, most recently from 2de79c1 to f6e7c37 Dec 9, 2018

@bors

This comment has been minimized.

Contributor

bors commented Dec 10, 2018

☔️ The latest upstream changes (presumably #56624) made this pull request unmergeable. Please resolve the merge conflicts.

@notriddle

This comment has been minimized.

Contributor

notriddle commented Dec 10, 2018

The exhaustive test now finishes without producing any errors!

@notriddle notriddle force-pushed the notriddle:master branch from f6e7c37 to 6846825 Dec 10, 2018

@alexcrichton

This comment has been minimized.

Member

alexcrichton commented Dec 10, 2018

It looks like some submodule updates may have snuck in here by accident? Otherwise this seems like it's likely good to go perhaps?

@notriddle notriddle force-pushed the notriddle:master branch from 6846825 to 81de5d9 Dec 10, 2018

@notriddle

This comment has been minimized.

Contributor

notriddle commented Dec 10, 2018

@alexcrichton Fixed.

@alexcrichton

Can a general comment also be added indicating that this is compared against the actual implementation and the documentation doesn't seem to reflect reality for a lot of edge cases?

Fix nits
Add comments explaining how we test this,
and use a slice for debugging instead of a clone of the iterator.
@notriddle

This comment has been minimized.

Contributor

notriddle commented Dec 10, 2018

@alexcrichton

/// This function was tested for equivalence to the shell32.dll implementation in
/// Windows 10 Pro v1803, using an exhaustive test suite available at
/// <https://gist.github.com/notriddle/dde431930c392e428055b2dc22e638f5> or
/// <https://paste.gg/p/anonymous/47d6ed5f5bd549168b1c69c799825223>.
Fix nit
Rewrite it to not use `if let`.
Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
Show resolved Hide resolved src/libstd/sys/windows/args.rs Outdated
@notriddle

This comment has been minimized.

Contributor

notriddle commented Dec 11, 2018

That should fix both of your nits, @alexcrichton

@notriddle notriddle force-pushed the notriddle:master branch from 53e09b6 to 83fe6e4 Dec 11, 2018

@alexcrichton

This comment has been minimized.

Member

alexcrichton commented Dec 11, 2018

@bors: r+

💯

@bors

This comment has been minimized.

Contributor

bors commented Dec 11, 2018

📌 Commit 83fe6e4 has been approved by alexcrichton

@bors

This comment has been minimized.

Contributor

bors commented Dec 11, 2018

⌛️ Testing commit 83fe6e4 with merge a8aa876...

bors added a commit that referenced this pull request Dec 11, 2018

Auto merge of #56568 - notriddle:master, r=alexcrichton
Remove dependency on shell32.dll

Closes #56510 if it works on MinGW (I've only tested it on MSVC).
@bors

This comment has been minimized.

Contributor

bors commented Dec 11, 2018

💔 Test failed - status-appveyor

@rust-highfive

This comment has been minimized.

Collaborator

rust-highfive commented Dec 11, 2018

Your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
Checking out files: 100% (17616/17616), done.
travis_time:end:379671e4:start=1544571636747884000,finish=1544571647443178000,duration=10695294000
$ cd rust-lang/rust
$ git checkout -qf a8aa87621b2bb1f806793c93b5eea25649b7e651
fatal: reference is not a tree: a8aa87621b2bb1f806793c93b5eea25649b7e651
The command "git checkout -qf a8aa87621b2bb1f806793c93b5eea25649b7e651" failed and exited with 128 during .
Your build has been stopped.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@alexcrichton

This comment has been minimized.

Member

alexcrichton commented Dec 11, 2018

@bors: retry

  • CI automation hiccup
@kennytm

This comment has been minimized.

Member

kennytm commented Dec 14, 2018

@bors p=1 retry

@bors

This comment has been minimized.

Contributor

bors commented Dec 14, 2018

⌛️ Testing commit 83fe6e4 with merge 7d03617...

bors added a commit that referenced this pull request Dec 14, 2018

Auto merge of #56568 - notriddle:master, r=alexcrichton
Remove dependency on shell32.dll

Closes #56510 if it works on MinGW (I've only tested it on MSVC).
@bors

This comment has been minimized.

Contributor

bors commented Dec 14, 2018

☀️ Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing 7d03617 to master...

@bors bors merged commit 83fe6e4 into rust-lang:master Dec 14, 2018

2 checks passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details
homu Test successful
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment