Skip to content

MarkView sometimes loses track of parent hierarchy #1306

@Monkatraz

Description

@Monkatraz

Describe the issue

I don't really have a good explanation for this one, despite how long I spent narrowing down this bug. I have a reproduction, here are the steps:

  • open the repro, wait until you see the diagnostics appear
  • place your cursor after "hello", but before the closing parenthesis
  • type whatever you want, preferably something long
  • check the log, you should see views logged with no parents

I'm fairly confident this is the source of a lot of bugs, some of our nastiest ones. It may be performance sensitive as it doesn't always work.

Here is a video demonstrating the repro:

Screencast.from.12-07-2023.08.48.10.PM.webm

Browser and platform

Chrome, Firefox

Reproduction link

https://codemirror.net/try/?c=aW1wb3J0IHtiYXNpY1NldHVwLCBFZGl0b3JWaWV3fSBmcm9tICJjb2RlbWlycm9yIgppbXBvcnQge0RlY29yYXRpb259IGZyb20gIkBjb2RlbWlycm9yL3ZpZXciCmltcG9ydCB7bGludGVyfSBmcm9tICJAY29kZW1pcnJvci9saW50IgppbXBvcnQge3B5dGhvbn0gZnJvbSAiQGNvZGVtaXJyb3IvbGFuZy1weXRob24iCmltcG9ydCB7b25lRGFya30gZnJvbSAiQGNvZGVtaXJyb3IvdGhlbWUtb25lLWRhcmsiCgpjb25zdCBsaW50ID0gbGludGVyKCh2aWV3KSA9PiB7CiAgbGV0IGRpYWdub3N0aWNzID0gW10KICBsZXQgcG9zID0gMAoKICBmb3IgKGNvbnN0IGxpbmUgb2Ygdmlldy5zdGF0ZS5kb2MuaXRlckxpbmVzKCkpIHsKICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoJ3ByaW50KCcpICYmIGxpbmUuZW5kc1dpdGgoJyknKSkgewogICAgICBkaWFnbm9zdGljcy5wdXNoKHsKICAgICAgICBmcm9tOiBwb3MsCiAgICAgICAgdG86IHBvcyArIGxpbmUubGVuZ3RoLAogICAgICAgIG1lc3NhZ2U6ICdzdGF0ZW1lbnQnLAogICAgICAgIHNldmVyaXR5OiAnZXJyb3InCiAgICAgIH0pCgogICAgICBkaWFnbm9zdGljcy5wdXNoKHsKICAgICAgICBmcm9tOiBwb3MgKyA1LAogICAgICAgIHRvOiBwb3MgKyA2LAogICAgICAgIG1lc3NhZ2U6ICdvcGVuIHBhcmVuJywKICAgICAgICBzZXZlcml0eTogJ2Vycm9yJwogICAgICB9KQoKICAgICAgZGlhZ25vc3RpY3MucHVzaCh7CiAgICAgICAgZnJvbTogcG9zICsgbGluZS5sZW5ndGggLSAxLAogICAgICAgIHRvOiBwb3MgKyBsaW5lLmxlbmd0aCwKICAgICAgICBtZXNzYWdlOiAnY2xvc2UgcGFyZW4nLAogICAgICAgIHNldmVyaXR5OiAnZXJyb3InCiAgICAgIH0pCiAgICB9CgogICAgcG9zICs9IGxpbmUubGVuZ3RoICsgMQogIH0KCiAgcmV0dXJuIGRpYWdub3N0aWNzCn0pCgoKZnVuY3Rpb24gY2hlY2soY3ZpZXcsIGZpcnN0ID0gZmFsc2UpIHsKICBpZiAoIWN2aWV3KSByZXR1cm4KICBpZiAoIWN2aWV3LnBhcmVudCAmJiAhZmlyc3QpIGNvbnNvbGUubG9nKGN2aWV3KQogIGlmIChjdmlldy5jaGlsZHJlbiAmJiBjdmlldy5jaGlsZHJlbi5sZW5ndGgpIHsKICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY3ZpZXcuY2hpbGRyZW4pIHsKICAgICAgY2hlY2soY2hpbGQpCiAgICB9CiAgfQp9Cgpjb25zdCBjaGVja2VyID0gRWRpdG9yVmlldy51cGRhdGVMaXN0ZW5lci5vZigodXBkYXRlKSA9PiB7CiAgY2hlY2sodXBkYXRlLnZpZXcuZG9jVmlldywgdHJ1ZSkKfSkKCm5ldyBFZGl0b3JWaWV3KHsKICBkb2M6ICJwcmludChcImhlbGxvXCIpXG4iLAogIGV4dGVuc2lvbnM6IFtiYXNpY1NldHVwLCBvbmVEYXJrLCBweXRob24oKSwgbGludCwgY2hlY2tlcl0sCiAgcGFyZW50OiBkb2N1bWVudC5ib2R5Cn0pCg==

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions