matkuki/ExCo

Column select mode, blank line, unstable, crash.

MvGulik opened this issue · 5 comments

  1. Open new file.
  2. Add single line with only spaces. (64 spaces should do)
  3. Initiate column select (CTRL+Mouse-Select) on that lines (at or near beginning of line).
  4. Extend selection with mouse towards the end of the line.
  5. Tends to crash at some point.
  • On multiple blank lines. Extending the selection over more than one line first, seems to bypass this issue. (as long as multiple lines are kept selected)

Terminal output at crash:
free(): invalid pointer
Aborted (core dumped)

Process 4618 (python) of user 1000 dumped core.
Stack trace of thread 4618:
#0  0x00007efe52c75e97 __GI_raise (libc.so.6)
#1  0x00007efe52c77801 __GI_abort (libc.so.6)
#2  0x00007efe52cc0897 __libc_message (libc.so.6)
#3  0x00007efe52cc790a malloc_printerr (libc.so.6)
#4  0x00007efe52ccef60 _int_free (libc.so.6)
#5  0x00007efe5091eb4c n/a (/home/<user>/test_venv/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5)
#6  0x00000000028fe450 n/a (n/a)
#7  0x00007efe502a5148 n/a (/home/<user>/test_venv/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Gui.so.5)

Using: Ex.Co 6.13
(other local version's info below)


Some Issue background:

Issue initially encountered with eric6 (also reporting it here on the off change it might potentially expedite a potential fix)

Process 3684 (eric6) of user 1000 dumped core.
Stack trace of thread 3684:
#0  0x00007f5764b46e97 __GI_raise (libc.so.6)
#1  0x00007f5764b48801 __GI_abort (libc.so.6)
#2  0x00007f5764b91897 __libc_message (libc.so.6)
#3  0x00007f5764b9890a malloc_printerr (libc.so.6)
#4  0x00007f5764b98b0c malloc_consolidate (libc.so.6)
#5  0x00007f5764b9c7d8 _int_malloc (libc.so.6)
#6  0x00007f5764b9f2ed __GI___libc_malloc (libc.so.6)
#7  0x00007f57626dc298 _Znwm (libstdc++.so.6)
#8  0x00007f57565b9b8a n/a (/home/<user>/test_venv/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Gui.so.5)

Additional version Numbers (pulled from eric6 version info window)

Python: 3.6.9, 64-Bit
Qt: 5.14.2
PyQt: 5.14.2
PyQtWebEngine: 5.14.0
QScintilla: 2.11.4 <= seems to be the main source for this issue.
sip: 5.1.2
WebEngine: 77.0.3865.129
eric6: 20.4 (rev. daa7d050b3af)

(Linux Mint 19.3 cinnamon)


... Mmm. Think I might have found myself a new potential alternative code editor ...

Other affected case(s) found:

Not affected / unable to reproduce.

Hey @MvGulik
Thanks for the detailed report! Will look at it as soon I can.

Windows:

  • Cannot reproduce the issue

Raspbian (arm) with PyQt 5.7 and QScintilla 2.9.3:

  • Issue is reproducible, throws:
*** Error in `/usr/bin/python3': free(): invalid next size (fast): 0x0143d490 ***
Aborted

Found the problem:

  • Calling QScintilla's selectedText function inside the selectionChanged signal callback causes the problem.
  • The problem only appears when holding down CTRL while dragging the mouse, ALT works without problems. print statements show that the selectedText function returns an invalid result with a newline character in it.
  • try/except cannot catch this, as the problem seems to be in the underlying C++ code.

Thanks. :-) 👍
Sending link to eric6 dev.