Skip to content

Rollup of 12 pull requests - #82010

Closed
Dylan-DPC-zz wants to merge 34 commits into
rust-lang:masterfrom
Dylan-DPC-zz:rollup-r8lao76
Closed

Rollup of 12 pull requests#82010
Dylan-DPC-zz wants to merge 34 commits into
rust-lang:masterfrom
Dylan-DPC-zz:rollup-r8lao76

Conversation

@Dylan-DPC-zz

Copy link
Copy Markdown

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

petar-dambovalievand others added 30 commits December 12, 2020 23:08
…t_unchecked` in `Zip` `TrustedRandomAccess` specialization
Otherwise if `Iterator::self.a.__iterator_get_unchecked` panics the
index would not have been incremented yet and another call to
`Iterator::next` would read from the same index again, which is not
allowed according to the API contract of `TrustedRandomAccess` for
`!Clone`.
Fixesrust-lang#81740
Move the note about dropping cloudabi next to the other platform support
changes.
Introduced in d3c4dbd, noticed only
after the fact, sorry. 😅
Signed-off-by: Daniel Egger <daniel@eggers-club.de>
Fixesrust-lang#81928
“Ask forgiveness not permission” : this makes the code both simpler and more robust
HWAddressSanitizer support
# Motivation
Compared to regular ASan, HWASan has a [smaller overhead](https://source.android.com/devices/tech/debug/hwasan). The difference in practice is that HWASan'ed code is more usable, e.g. Android device compiled with HWASan can be used as a daily driver.
# Example
```
fn main() {
let xs = vec![0, 1, 2, 3];
let _y = unsafe { *xs.as_ptr().offset(4) };
}
```
```
==223==ERROR: HWAddressSanitizer: tag-mismatch on address 0xefdeffff0050 at pc 0xaaaad00b3468
READ of size 4 at 0xefdeffff0050 tags: e5/00 (ptr/mem) in thread T0
#0 0xaaaad00b3464 (/root/main+0x53464)
rust-lang#1 0xaaaad00b39b4 (/root/main+0x539b4)
rust-lang#2 0xaaaad00b3dd0 (/root/main+0x53dd0)
rust-lang#3 0xaaaad00b61dc (/root/main+0x561dc)
rust-lang#4 0xaaaad00c0574 (/root/main+0x60574)
rust-lang#5 0xaaaad00b6290 (/root/main+0x56290)
rust-lang#6 0xaaaad00b6170 (/root/main+0x56170)
rust-lang#7 0xaaaad00b3578 (/root/main+0x53578)
rust-lang#8 0xffff81345e70 (/lib64/libc.so.6+0x20e70)
rust-lang#9 0xaaaad0096310 (/root/main+0x36310)
[0xefdeffff0040,0xefdeffff0060) is a small allocated heap chunk; size: 32 offset: 16
0xefdeffff0050 is located 0 bytes to the right of 16-byte region [0xefdeffff0040,0xefdeffff0050)
allocated here:
#0 0xaaaad009bcdc (/root/main+0x3bcdc)
rust-lang#1 0xaaaad00b1eb0 (/root/main+0x51eb0)
rust-lang#2 0xaaaad00b20d4 (/root/main+0x520d4)
rust-lang#3 0xaaaad00b2800 (/root/main+0x52800)
rust-lang#4 0xaaaad00b1cf4 (/root/main+0x51cf4)
rust-lang#5 0xaaaad00b33d4 (/root/main+0x533d4)
rust-lang#6 0xaaaad00b39b4 (/root/main+0x539b4)
rust-lang#7 0xaaaad00b61dc (/root/main+0x561dc)
rust-lang#8 0xaaaad00b3578 (/root/main+0x53578)
rust-lang#9 0xaaaad0096310 (/root/main+0x36310)
Thread: T0 0xeffe00002000 stack: [0xffffc0590000,0xffffc0d90000) sz: 8388608 tls: [0xffff81521020,0xffff815217d0)
Memory tags around the buggy address (one tag corresponds to 16 bytes):
0xfefcefffef80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefcefffef90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefcefffefa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefcefffefb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefcefffefc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefcefffefd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefcefffefe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefcefffeff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0xfefceffff000: a2 a2 05 00 e5 [00] 00 00 00 00 00 00 00 00 00 00
0xfefceffff010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefceffff020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefceffff030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefceffff040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefceffff050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefceffff060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefceffff070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xfefceffff080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Tags for short granules around the buggy address (one tag corresponds to 16 bytes):
0xfefcefffeff0: .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
=>0xfefceffff000: .. .. c5 .. .. [..] .. .. .. .. .. .. .. .. .. ..
0xfefceffff010: .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
See https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html#short-granules for a description of short granule tags
Registers where the failure occurred (pc 0xaaaad00b3468):
x0 e500efdeffff0050 x1 0000000000000004 x2 0000ffffc0d8f5a0 x3 0200efff00000000
x4 0000ffffc0d8f4c0 x5 000000000000004f x6 00000ffffc0d8f36 x7 0000efff00000000
x8 e500efdeffff0050 x9 0200efff00000000 x10 0000000000000000 x11 0200efff00000000
x12 0200effe000006b0 x13 0200effe000006b0 x14 0000000000000008 x15 00000000c00000cf
x16 0000aaaad00a0afc x17 0000000000000003 x18 0000000000000001 x19 0000ffffc0d8f718
x20 ba00ffffc0d8f7a0 x21 0000aaaad00962e0 x22 0000000000000000 x23 0000000000000000
x24 0000000000000000 x25 0000000000000000 x26 0000000000000000 x27 0000000000000000
x28 0000000000000000 x29 0000ffffc0d8f650 x30 0000aaaad00b3468
```
# Comments/Caveats
* HWASan is only supported on arm64.
* I'm not sure if I should add a feature gate or piggyback on the existing one for sanitizers.
* HWASan requires `-C target-feature=+tagged-globals`. That flag should probably be set transparently to the user. Not sure how to go about that.
# TODO
* Need more tests.
* Update documentation.
* Fix symbolization.
* Integrate with CI
…pecialization-panic-safety, r=KodrAus
Increment `self.index` before calling `Iterator::self.a.__iterator_ge…
…`t_unchecked` in `Zip` `TrustedRandomAccess` specialization
Otherwise if `Iterator::self.a.__iterator_get_unchecked` panics the
index would not have been incremented yet and another call to
`Iterator::next` would read from the same index again, which is not
allowed according to the API contract of `TrustedRandomAccess` for
`!Clone`.
Fixesrust-lang#81740
use RWlock when accessing os::env
Multiple threads modifying the current process environment is fairly uncommon. Optimize for the more common read case.
r? ``@m-ou-se``
…komatsakis
GAT/const_generics: Allow with_opt_const_param to return GAT param def_id
Fixesrust-lang#75415Fixesrust-lang#79666
cc `@lcnr`
I've absolutely no idea who to r? for this...
Relax ItemCtxt::to_ty lifetime
Tiny simplification by relaxing a lifetime.
…atform-notes, r=XAMPPRocky
RELEASES.md 1.50: Group platform support notes together
Move the note about dropping cloudabi next to the other platform support
changes.
bootstrap: Locate llvm-dwp based on llvm-config bindir
Fixesrust-lang#81949.
Tested by successfully building 1.50.0 pre-release, which is where I originally hit the issue (https://internals.rust-lang.org/t/rust-1-50-0-pre-release-testing/14012/4?u=dtolnay). Tested both with and without prebuilt LLVM. The check for dry_run is necessary in the non-prebuilt case because the llvm-config built by bootstrap won't exist yet.
Fix assosiated typo
Introduced in d3c4dbd, noticed only
after the fact, sorry. 😅
Signed-off-by: Daniel Egger <daniel@eggers-club.de>
Fix documentation not showing on localStorage error
Fixesrust-lang#81928
The [documentation for setItem](https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem) specifies:
> developers should make sure to always catch possible exceptions from setItem()
…r=Mark-Simulacrum
bootstrap: fix wrong docs installation path
This PR fixesrust-lang#81967, a regression introduced by rust-lang#80797. The commit has already been backported to stable 1.50.0.
r? ````@Mark-Simulacrum````
Seal the CommandExt, OsStrExt and OsStringExt traits
A crater run (rust-lang#81213 (comment)) has shown that this does not break any existing code.
This also unblocks rust-lang#77728.
Based on rust-lang#81213.
r? ``@m-ou-se``
cc ``@lygstate``
@rustbotrustbot added the rollup A PR which is a rollup label Feb 11, 2021
@Dylan-DPC-zz

Copy link
Copy Markdown
Author

@bors r+ rollup=never p=5

@bors

bors commented Feb 11, 2021

Copy link
Copy Markdown
Collaborator

📌 Commit 12c5065 has been approved by Dylan-DPC

@borsbors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Feb 11, 2021
@bors

bors commented Feb 12, 2021

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 12c5065 with merge 8d164047135e84e56925451bac040a899fa4be89...

@bors

bors commented Feb 12, 2021

Copy link
Copy Markdown
Collaborator

💥 Test timed out

@borsbors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Feb 12, 2021
@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

A job failed! Check out the build log: (web)(plain)

Click to see the possible cause of the failure (guessed by this bot)

@Dylan-DPC-zz
Dylan-DPC-zz deleted the rollup-r8lao76 branch February 12, 2021 14:52
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rollupA PR which is a rollupS-waiting-on-reviewStatus: Awaiting review from the assignee but also interested parties.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

16 participants

@Dylan-DPC-zz@bors@rust-log-analyzer@rustbot@petar-dambovaliev@sdroege@the8472@BoxyUwU@camsteffen@joshtriplett@dtolnay@therealprof@lovasoa@emilyalbini@Amanieu@Dylan-DPC