atom-minimap / minimap

A preview of the full source code.
https://atom.io/packages/minimap
MIT License
646 stars 130 forks source link

Uncaught Error: Invalid text decoration iterator position #508

Open lowercasedots opened 8 years ago

lowercasedots commented 8 years ago

Can't reproduce with 100% reliability, however when it occurs it's just after opening a file - typically a php file, although it's happened in scss as well - and then I start to scroll down a bit. If the issue happens it'll usually be within a few moments of scrolling.

In this case I had just loaded functions.php for wordpress, and the error popped up before I'd even made two flicks of the scroll wheel:

Atom Version: 1.9.0-beta0 System: Microsoft Windows 7 Professional Thrown From: minimap package, v4.24.6

Stack Trace

Uncaught Error: Invalid text decoration iterator position: (101, 125). Buffer row 101 has length 157.

At C:\Users\shawn\Atom Beta\resources\app.asar\node_modules\text-buffer\lib\display-layer.js:1074

Error: Invalid text decoration iterator position: (101, 125).
Buffer row 101 has length 157.
    at DisplayLayer.module.exports.DisplayLayer.getScreenLines (C:\Users\shawn\Downloads\Atom Beta\resources\app.asar\node_modules\text-buffer\lib\display-layer.js:1074:19)
    at atom-text-editor-minimap.tokenLinesForScreenRows (C:/Users/shawn/.atom/packages/minimap/lib/mixins/canvas-drawer.js:436:40)
    at atom-text-editor-minimap.drawLines (C:/Users/shawn/.atom/packages/minimap/lib/mixins/canvas-drawer.js:492:35)
    at atom-text-editor-minimap.redrawRangesOnLayer (C:/Users/shawn/.atom/packages/minimap/lib/mixins/canvas-drawer.js:270:14)
    at atom-text-editor-minimap.updateTokensLayer (C:/Users/shawn/.atom/packages/minimap/lib/mixins/canvas-drawer.js:136:10)
    at atom-text-editor-minimap.updateCanvas (C:/Users/shawn/.atom/packages/minimap/lib/mixins/canvas-drawer.js:104:10)
    at atom-text-editor-minimap.update (C:/Users/shawn/.atom/packages/minimap/lib/minimap-element.js:857:10)
    at C:/Users/shawn/.atom/packages/minimap/lib/minimap-element.js:751:12

Commands

Config

{
  "core": {
    "disabledPackages": [
      "linter-csslint",
      "neon-selection",
      "activate-power-mode",
      "indent-guide-improved",
      "file-icons"
    ],
    "themes": [
      "atom-material-ui",
      "firewatch-green-syntax"
    ]
  },
  "minimap": {}
}

Installed Packages

# User
an-old-hope-syntax, v0.5.0 (inactive)
atom-beautify, v0.29.9 (active)
atom-material-ui, v1.2.13 (active)
autoclose-html, v0.23.0 (active)
emmet, v2.4.3 (active)
file-icons, v1.7.15 (inactive)
firefox-dev-dark-syntax, v2.5.3 (inactive)
firewatch-green-syntax, v1.0.0 (active)
firewatch-syntax, v1.0.1 (inactive)
fonts, v1.5.0 (active)
genesis-syntax, v1.0.7 (inactive)
genesis-ui, v0.5.0 (inactive)
grammar-token-limit, v0.1.1 (active)
highlight-line, v0.11.1 (active)
linter, v1.11.14 (active)
linter-php, v1.2.0 (active)
linter-scss-lint, v3.0.4 (active)
minimap, v4.24.6 (active)
new-moon-atom-syntax, v2.0.6 (inactive)
pigments, v0.29.3 (active)
quick-editor, v0.4.3 (inactive)
release-notes, v0.53.0 (active)
sass-autocompile, v0.12.7 (active)
save-session, v0.15.7 (active)
seti-icons, v1.3.1 (active)
sort-lines, v0.14.0 (inactive)
Sublime-Style-Column-Selection, v1.5.1 (active)
swackets, v0.10.0 (active)
sync-settings, v0.7.2 (active)
atom-dark-syntax, v0.27.0 (inactive)
atom-dark-ui, v0.51.0 (inactive)
atom-light-syntax, v0.28.0 (inactive)
atom-light-ui, v0.43.0 (inactive)
base16-tomorrow-dark-theme, v1.1.0 (inactive)
base16-tomorrow-light-theme, v1.1.1 (inactive)
one-dark-ui, v1.3.2 (inactive)
one-light-ui, v1.3.2 (inactive)
one-dark-syntax, v1.2.0 (inactive)
one-light-syntax, v1.2.0 (inactive)
solarized-dark-syntax, v1.0.2 (inactive)
solarized-light-syntax, v1.0.2 (inactive)
about, v1.5.2 (active)
archive-view, v0.61.1 (active)
autocomplete-atom-api, v0.10.0 (active)
autocomplete-css, v0.11.1 (active)
autocomplete-html, v0.7.2 (active)
autocomplete-plus, v2.31.0 (active)
autocomplete-snippets, v1.11.0 (active)
autoflow, v0.27.0 (inactive)
autosave, v0.23.1 (active)
background-tips, v0.26.0 (active)
bookmarks, v0.41.0 (active)
bracket-matcher, v0.82.1 (active)
command-palette, v0.38.0 (inactive)
deprecation-cop, v0.54.1 (active)
dev-live-reload, v0.47.0 (active)
encoding-selector, v0.22.0 (active)
exception-reporting, v0.38.1 (active)
fuzzy-finder, v1.2.0 (active)
git-diff, v1.0.1 (active)
find-and-replace, v0.198.0 (inactive)
go-to-line, v0.31.0 (inactive)
grammar-selector, v0.48.1 (active)
image-view, v0.58.0 (active)
incompatible-packages, v0.26.1 (active)
keybinding-resolver, v0.35.0 (active)
line-ending-selector, v0.5.0 (active)
link, v0.31.1 (inactive)
markdown-preview, v0.158.0 (active)
metrics, v0.53.1 (active)
notifications, v0.64.1 (active)
open-on-github, v1.1.0 (inactive)
package-generator, v1.0.0 (inactive)
settings-view, v0.238.0 (active)
snippets, v1.0.2 (active)
spell-check, v0.67.1 (active)
status-bar, v1.3.1 (active)
styleguide, v0.46.0 (active)
symbols-view, v0.113.0 (inactive)
tabs, v0.98.0 (active)
timecop, v0.33.1 (active)
tree-view, v0.208.0 (active)
update-package-dependencies, v0.10.0 (active)
welcome, v0.34.0 (active)
whitespace, v0.32.2 (active)
wrap-guide, v0.38.1 (active)
language-c, v0.52.1 (active)
language-clojure, v0.21.0 (active)
language-coffee-script, v0.47.0 (active)
language-csharp, v0.12.1 (active)
language-css, v0.36.2 (active)
language-gfm, v0.86.0 (active)
language-git, v0.13.0 (active)
language-go, v0.42.0 (active)
language-html, v0.44.1 (active)
language-hyperlink, v0.16.0 (active)
language-java, v0.22.0 (active)
language-javascript, v0.119.0 (active)
language-json, v0.18.0 (active)
language-less, v0.29.3 (active)
language-make, v0.22.2 (active)
language-mustache, v0.13.0 (active)
language-objective-c, v0.15.1 (active)
language-perl, v0.35.0 (active)
language-php, v0.37.0 (active)
language-property-list, v0.8.0 (active)
language-python, v0.45.0 (active)
language-ruby, v0.68.5 (active)
language-ruby-on-rails, v0.25.0 (active)
language-sass, v0.52.0 (active)
language-shellscript, v0.22.3 (active)
language-source, v0.9.0 (active)
language-sql, v0.21.1 (active)
language-text, v0.7.1 (active)
language-todo, v0.28.0 (active)
language-toml, v0.18.0 (active)
language-xml, v0.34.8 (active)
language-yaml, v0.26.0 (active)

# Dev
No dev packages
abe33 commented 8 years ago

Hi @digitalsms, thanks for the report, I think I've got this issue a few times too when 1.9.0 was still in -dev release, but, as you, I couldn't find good reproduction steps. It also appears it has been already reported several times on atom core (see https://github.com/atom/atom/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20Invalid%20text%20decoration%20iterator%20position) and adding a guard to catch the error would make the whole routine unoptimized for v8 (which refuses to optimize methods with a try...catch construct) so for the time being I don't think it would be wise to do so.