-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
regression: overflow evaluating, Send/Sync? #61472
Comments
A fix for |
I've been told that this is due to #60444. What's strange about the fuzzy-pickles regression is that it only appears when running rustdoc. Why would running rustdoc have different behavior for evaluating these bounds? |
Maybe it arises from rustdoc's attempt to determine what traits to list as implemented? I don't think Update: of course, if that is indeed the case, then that is a not-great failure mode for Update 2: I think I have validated the above hypothesis for the cause. I tried adding the line below to const _ASSERT_FILE_IS_SEND: () = { struct S<T: Send>(Option<T>); S::<File>(None); () }; which acts as a way to force |
(BTW adding |
@shepmaster rustdoc does some different access patterns, especially around traits -- for example, it wants to print out whether or not a type is |
So: I'm working on addressing the performance hurdles here, but I think that the "correctness side" is correct, and we ought not to revert it. The only real question is whether to issue a warning period. I'm not really sure how to go about doing that -- it may be possible, I'd have to think on it. I'd prefer to focus on improving the performance, however. |
Creating a sequence of 63 nested structs triggers this problem: N=63; (echo "struct S0;"; for i in $(seq 0 $N); do echo "struct S$(( $i + 1 ))(S${i});"; done; echo "fn is_send<T: Send>() {}"; echo "fn main() { is_send::<S${N}>(); }") > long.rs
Whole programstruct S0;
struct S1(S0);
struct S2(S1);
struct S3(S2);
struct S4(S3);
struct S5(S4);
struct S6(S5);
struct S7(S6);
struct S8(S7);
struct S9(S8);
struct S10(S9);
struct S11(S10);
struct S12(S11);
struct S13(S12);
struct S14(S13);
struct S15(S14);
struct S16(S15);
struct S17(S16);
struct S18(S17);
struct S19(S18);
struct S20(S19);
struct S21(S20);
struct S22(S21);
struct S23(S22);
struct S24(S23);
struct S25(S24);
struct S26(S25);
struct S27(S26);
struct S28(S27);
struct S29(S28);
struct S30(S29);
struct S31(S30);
struct S32(S31);
struct S33(S32);
struct S34(S33);
struct S35(S34);
struct S36(S35);
struct S37(S36);
struct S38(S37);
struct S39(S38);
struct S40(S39);
struct S41(S40);
struct S42(S41);
struct S43(S42);
struct S44(S43);
struct S45(S44);
struct S46(S45);
struct S47(S46);
struct S48(S47);
struct S49(S48);
struct S50(S49);
struct S51(S50);
struct S52(S51);
struct S53(S52);
struct S54(S53);
struct S55(S54);
struct S56(S55);
struct S57(S56);
struct S58(S57);
struct S59(S58);
struct S60(S59);
struct S61(S60);
struct S62(S61);
struct S63(S62);
struct S64(S63);
fn is_send<T: Send>() {}
fn main() { is_send::<S63>(); } |
(This may be an instance of the umbrella issue #61960 .) |
@shepmaster By the way, I'm not sure your did you double-check that your |
😞 I did not. I apologize for the noise! |
I have confirmed that the lang-c crate issue was resolved between nightly-2019-06-16 and nightly-2019-06-17. |
I am not able to reproduce the problems from kailua_langsvr -- everything seems to build fine when I checkout the particular commit, both with today's nightly and with nightly-2019-06-16. I tried doing: carog check, cargo build, and cargo doc. |
This all seems like evidence that the regression is addressed by #61754. (So the only question remaining is whether to backport, a question which will be addressed this week; see discussion on the PR itself) |
(I'm going to close this as resolved, as the bug is fixed on nightly, and the decision of whether to backport PR #61754 will be made independently of whether this issue is closed or open.) |
root: fuzzy-pickles - 1 detected crates which regressed due to this; cc @shepmaster -- resolved
root: lang-c - 1 detected crates which regressed due to this; cc @vickenty -- resolved
root: conch-runtime - 1 detected crates which regressed due to this; cc @ipetkov -- resolved
root: kailua_langsvr - 1 detected crates which regressed due to this; cc @lifthrasiir -- cannot reproduce, appears fixed?
The text was updated successfully, but these errors were encountered: