Summary: The previous widening operator added stars to the *end* of paths that existed in `next` but not `prev`. This is not enough to ensure termination in the case where the trie is growing both deeper and wider at the same time. The newly added test demonstrates this issue. In the code, there's an ever-growing path of the form `tmp.prev.next.prev.next...` that wasn't summarized by the previous widening operator. The new widening is much more aggressive: it replaces *any* node present in `next` but not `prev` with a `*` (rather than trying to tack a star onto the end). This fixes the issue. This issue was causing divergence on tricky doubly-linked list code in prod. Reviewed By: jeremydubreil Differential Revision: D5665719 fbshipit-source-id: 1310a92master
parent
df1063b9eb
commit
3e6e76a2b2
Loading…
Reference in new issue