Stream: t-compiler/wg-polonius

Topic: current status of compare-mode polonius


nikomatsakis (Sep 13 2019 at 19:54, on Zulip):

Also, @lqd, what is the status of the work you were doing on compare-mode polonius ?

lqd (Sep 13 2019 at 20:00, on Zulip):

before going on vacation, the status was this: there was only one failing test in the UI suite, it was a stack overflow during fact generation, let me get my notes. (and there was one OOM in run-pass)

lqd (Sep 13 2019 at 20:02, on Zulip):

said notes

lqd (Sep 13 2019 at 20:02, on Zulip):

however since then, run-pass was merged into the ui suite

lqd (Sep 13 2019 at 20:02, on Zulip):

(and more tests could have been added and not work I haven't checked recently and will do so soon)

lqd (Sep 13 2019 at 20:03, on Zulip):

that made the 2-3 problematic case from the run-pass into the ui suite

lqd (Sep 13 2019 at 20:03, on Zulip):

one of which is the OOM (and a bit hard to investigate)

lqd (Sep 13 2019 at 20:04, on Zulip):

the other two were more "annoyances" than blockers per se, fact generation made them slower (which would surely be blockers if the compare-mode was actually ran on CI, once it works)

nikomatsakis (Sep 13 2019 at 20:05, on Zulip):

so a lot slower I guess

nikomatsakis (Sep 13 2019 at 20:05, on Zulip):

ok, thanks, that helps, I remember the OOM but forgot it was connected to that work

lqd (Sep 13 2019 at 20:05, on Zulip):

I have been investigating the OOM but didn't yet locate the source of so many universal regions and outlives relations

lqd (Sep 13 2019 at 20:05, on Zulip):

the MIR is huge, the graphviz files make dot crash, etc

lqd (Sep 13 2019 at 20:06, on Zulip):

it may indeed be related to consts/statics

lqd (Sep 13 2019 at 20:06, on Zulip):

the test is very macro heavy to do many float computations IIRC (but I still haven't looked at it unpretty expanded)

lqd (Sep 13 2019 at 20:07, on Zulip):

but I had located the point where we materialize the 15GB in rustc

lqd (Sep 13 2019 at 20:10, on Zulip):

and that point was here and materialized 10948 x 136664 outlives constraints

lqd (Sep 13 2019 at 20:11, on Zulip):

so a lot slower I guess

maybe not a lot per se, but slower, I'll get numbers; and generally refresh those results, as new failures must have crept through

lqd (Sep 13 2019 at 20:15, on Zulip):

ah also, there was the other check I added, which found some polonius errors which were not necessarily reported as rustc errors; I have noted some cases I managed to catch in the other list we talked about in the "reboot" meeting describing most of Polonius's status to my knowledge, quick link: here and some were related to statics (maybe all) so there may be some other fact generation issues around that I'll have to investigate more on this front as well

lqd (Sep 16 2019 at 12:34, on Zulip):

33GB :joy:

---- [ui (polonius)] ui/wrapping-int-combinations.rs stderr ----
memory allocation of 33550368768 bytes failed
lqd (Sep 16 2019 at 17:04, on Zulip):

alright, I updated the write-up to include the newer tests failures (since the run-pass ui migration), TLDR: one new (worse) OOM (similar to the previous one it seems), the other failures are tests we can bless

lqd (Sep 17 2019 at 18:16, on Zulip):

I've opened the PR "fixing" the other cases here

lqd (Sep 20 2019 at 19:29, on Zulip):

(there's a new failure, a trivial one again, I'll fix it next week)

lqd (Sep 23 2019 at 20:33, on Zulip):

("trivial", if we ignore the whole discussion about 'empty cough)

Matthew Jasper (Sep 23 2019 at 20:37, on Zulip):

I'll try to get a PR up that removes most of the Polonius compare mode differences up this week. After that there's just the Locations::All OOM issues.

lqd (Sep 23 2019 at 20:41, on Zulip):

the stack overflow generating facts on drop ?

Matthew Jasper (Sep 23 2019 at 20:41, on Zulip):

That's fixed by the PR

lqd (Sep 23 2019 at 20:42, on Zulip):

great!

lqd (Sep 23 2019 at 20:42, on Zulip):

did you ignore-compare-mode-polonius the new hrtb from where clause error ?

Matthew Jasper (Sep 23 2019 at 20:43, on Zulip):

Currently, but I'll probably change to fixing the actual problem.

lqd (Sep 23 2019 at 20:44, on Zulip):

wow, thanks Mattew that's likely going to be a bit more complicated :)

lqd (Sep 23 2019 at 20:46, on Zulip):

for the OOMs I think we've gone back and forth about this, IIRC at one point Location::All could be seen as a temporary hack, but still, correct in spirit

lqd (Sep 23 2019 at 20:48, on Zulip):

it generates a whole lot of outlives constraint even when not OOM-ing, like 3000+ for this "simple looking" function

lqd (Sep 23 2019 at 20:50, on Zulip):

just changing representation could just move the problem in the datalog when materializing the subset TC (depending on the variant)

Matthew Jasper (Sep 23 2019 at 20:50, on Zulip):

I attempted to remove the uses of Location::All that were causing the problem, but it resulted in a diagnostic regression (for normal NLL as well). I have a couple of ideas that would avoid this problem, but they're complicated enough that I don't really want to implement them until Polonius is more stable.

lqd (Sep 23 2019 at 20:50, on Zulip):

but we could sidestep the issue with the equality-tracking work tho

lqd (Sep 23 2019 at 20:51, on Zulip):

yeah

lqd (Sep 23 2019 at 20:51, on Zulip):

a tad unfortunate, but we can probably fix it correctly

Matthew Jasper (Sep 23 2019 at 20:51, on Zulip):

just changing representation could just move the problem in the datalog when materializing the subset TC (depending on the variant)

In the future when we only do position dependent outlives on lifetimes where it matters this shouldn't be a problem.

lqd (Sep 23 2019 at 20:54, on Zulip):

is "position-dependent outlives" the more expected term for the equality-tracking variant we can't seem to name ?

Matthew Jasper (Sep 23 2019 at 20:55, on Zulip):

No, I mean the normal location-sensitive version or whatever it's called.

lqd (Sep 23 2019 at 20:55, on Zulip):

ah :)

lqd (Sep 23 2019 at 20:56, on Zulip):

Naive or DatafrogOpt

Matthew Jasper (Sep 23 2019 at 20:57, on Zulip):

DatafrogOpt

lqd (Sep 23 2019 at 20:57, on Zulip):

ATM it feels all variants kinda depend on Location::All but I don't know to what extent

lqd (Sep 23 2019 at 20:58, on Zulip):

equality-tracking only partially

Matthew Jasper (Sep 23 2019 at 20:59, on Zulip):

Location-insensitive doesn't

lqd (Sep 23 2019 at 21:00, on Zulip):

true - but you know what I mean, it's not meant to compute the complete results

lqd (Sep 23 2019 at 21:00, on Zulip):

we could be unifying them earlier, and only produce "these lifetimes/regions/origins are equal" tuples, no need to materialize the outlives constraints at every point

lqd (Sep 23 2019 at 21:01, on Zulip):

I think

Last update: Nov 15 2019 at 20:35UTC