#6363 closed defect (fixed)
Qt6 shell tab-completion crash
| Reported by: | Tristan Croll | Owned by: | Zach Pearson |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.4 |
| Component: | Window Toolkit | Version: | |
| Keywords: | Cc: | chimerax-programmers, Tony Schaefer | |
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
The following bug report has been submitted:
Platform: Windows-10-10.0.19041
ChimeraX Version: 1.4.dev202203110419 (2022-03-11 04:19:32 UTC)
Description
Last time you used ChimeraX it crashed.
Please describe steps that led to the crash here.
Trying to tab-complete any import in the shell causes a crash.
Windows fatal exception: access violation
Thread 0x00004e44 (most recent call first):
File "C:\Program Files\ChimeraX-daily\bin\lib\selectors.py", line 315 in _select
File "C:\Program Files\ChimeraX-daily\bin\lib\selectors.py", line 324 in select
File "C:\Program Files\ChimeraX-daily\bin\lib\asyncio\base_events.py", line 1854 in _run_once
File "C:\Program Files\ChimeraX-daily\bin\lib\asyncio\base_events.py", line 596 in run_forever
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\tornado\platform\asyncio.py", line 199 in start
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\ipykernel\iostream.py", line 81 in _thread_main
File "C:\Program Files\ChimeraX-daily\bin\lib\threading.py", line 910 in run
File "C:\Program Files\ChimeraX-daily\bin\lib\threading.py", line 973 in _bootstrap_inner
File "C:\Program Files\ChimeraX-daily\bin\lib\threading.py", line 930 in _bootstrap
Thread 0x0000a8d0 (most recent call first):
File "C:\Program Files\ChimeraX-daily\bin\lib\threading.py", line 312 in wait
File "C:\Program Files\ChimeraX-daily\bin\lib\threading.py", line 574 in wait
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\IPython\core\history.py", line 829 in run
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\IPython\core\history.py", line 58 in needs_sqlite
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\decorator.py", line 232 in fun
File "C:\Program Files\ChimeraX-daily\bin\lib\threading.py", line 973 in _bootstrap_inner
File "C:\Program Files\ChimeraX-daily\bin\lib\threading.py", line 930 in _bootstrap
Current thread 0x00007cac (most recent call first):
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\console_widget.py", line 1696 in _get_block_plain_text
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\frontend_widget.py", line 70 in highlightBlock
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\console_widget.py", line 1089 in _fill_temporary_buffer
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\completion_html.py", line 350 in _update_list
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\completion_html.py", line 323 in show_items
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\console_widget.py", line 1078 in _complete_with_items
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\jupyter_widget.py", line 179 in _handle_complete_reply
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\base_frontend_mixin.py", line 138 in _dispatch
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\inprocess.py", line 46 in call_handlers
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\qtconsole\inprocess.py", line 42 in
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\chimerax\ui\gui.py", line 318 in event_loop
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\ChimeraX_main.py", line 867 in init
File "C:\Program Files\ChimeraX-daily\bin\lib\site-packages\ChimeraX_main.py", line 1018 in
File "C:\Program Files\ChimeraX-daily\bin\lib\runpy.py", line 87 in _run_code
File "C:\Program Files\ChimeraX-daily\bin\lib\runpy.py", line 197 in _run_module_as_main
===== Log before crash start =====
> isolde shorthand
Initialising ISOLDE-specific command aliases:
Alias Equivalent full command
-------------------------------------------------
st isolde step {arguments}
aw isolde add water {arguments}
awsf isolde add water {arguments} sim false
al isolde add ligand {arguments}
aa isolde add aa $1 sel {arguments}
ht isolde mod his sel {arguments}
so setattr sel atoms occupancy {arguments}
ab isolde adjust bfactors {arguments}
ss isolde sim start sel
rt isolde release torsions sel {arguments}
rd isolde release distances sel {arguments}
ra rd; rt
pf isolde pepflip sel
cf isolde cisflip sel
cbb color bfactor {arguments}
cbo color byattr occupancy {arguments}
cbc color {arguments} bychain; color {arguments} byhet
cs clipper set contourSensitivity {arguments}
UCSF ChimeraX version: 1.4.dev202203110419 (2022-03-11)
© 2016-2022 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
> ui tool show Shell
===== Log before crash end =====
Log:
> isolde shorthand
Initialising ISOLDE-specific command aliases:
Alias Equivalent full command
-------------------------------------------------
st isolde step {arguments}
aw isolde add water {arguments}
awsf isolde add water {arguments} sim false
al isolde add ligand {arguments}
aa isolde add aa $1 sel {arguments}
ht isolde mod his sel {arguments}
so setattr sel atoms occupancy {arguments}
ab isolde adjust bfactors {arguments}
ss isolde sim start sel
rt isolde release torsions sel {arguments}
rd isolde release distances sel {arguments}
ra rd; rt
pf isolde pepflip sel
cf isolde cisflip sel
cbb color bfactor {arguments}
cbo color byattr occupancy {arguments}
cbc color {arguments} bychain; color {arguments} byhet
cs clipper set contourSensitivity {arguments}
UCSF ChimeraX version: 1.4.dev202203110419 (2022-03-11)
© 2016-2022 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
OpenGL version: 3.3.0 NVIDIA 497.29
OpenGL renderer: NVIDIA GeForce RTX 2080/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Locale: en_GB.cp1252
Qt version: PyQt6 6.2.3, Qt 6.2.3
Qt platform: windows
Manufacturer: Notebook
Model: P7xxTM1
OS: Microsoft Windows 10 Education (Build 19041)
Memory: 68,654,501,888
MaxProcessMemory: 137,438,953,344
CPU: 16 Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz
OSLanguage: en-GB
Installed Packages:
-himerax-isolde: 1.4.dev0
alabaster: 0.7.12
appdirs: 1.4.4
Babel: 2.9.1
backcall: 0.2.0
blockdiag: 3.0.0
certifi: 2021.10.8
cftime: 1.6.0
charset-normalizer: 2.0.12
ChimeraX-AddCharge: 1.2.3
ChimeraX-AddH: 2.1.11
ChimeraX-AlignmentAlgorithms: 2.0
ChimeraX-AlignmentHdrs: 3.2.1
ChimeraX-AlignmentMatrices: 2.0
ChimeraX-Alignments: 2.2.3
ChimeraX-AlphaFold: 1.0
ChimeraX-AltlocExplorer: 1.0.1
ChimeraX-AmberInfo: 1.0
ChimeraX-Arrays: 1.0
ChimeraX-Atomic: 1.36.2
ChimeraX-AtomicLibrary: 6.1.1
ChimeraX-AtomSearch: 2.0.1
ChimeraX-AxesPlanes: 2.1
ChimeraX-BasicActions: 1.1
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 2.0
ChimeraX-BondRot: 2.0
ChimeraX-BugReporter: 1.0
ChimeraX-BuildStructure: 2.6.1
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.1
ChimeraX-ButtonPanel: 1.0
ChimeraX-CageBuilder: 1.0
ChimeraX-CellPack: 1.0
ChimeraX-Centroids: 1.2
ChimeraX-ChemGroup: 2.0
ChimeraX-Clashes: 2.2.2
ChimeraX-Clipper: 0.18.0
ChimeraX-ColorActions: 1.0
ChimeraX-ColorGlobe: 1.0
ChimeraX-ColorKey: 1.5.1
ChimeraX-CommandLine: 1.2.1
ChimeraX-ConnectStructure: 2.0.1
ChimeraX-Contacts: 1.0
ChimeraX-Core: 1.4.dev202203110419
ChimeraX-CoreFormats: 1.1
ChimeraX-coulombic: 1.3.2
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-CrystalContacts: 1.0
ChimeraX-DataFormats: 1.2.2
ChimeraX-Dicom: 1.0
ChimeraX-DistMonitor: 1.1.5
ChimeraX-Dssp: 2.0
ChimeraX-EMDB-SFF: 1.0
ChimeraX-ExperimentalCommands: 1.0
ChimeraX-FileHistory: 1.0
ChimeraX-FunctionKey: 1.0
ChimeraX-Geometry: 1.1
ChimeraX-gltf: 1.0
ChimeraX-Graphics: 1.1
ChimeraX-Hbonds: 2.1.2
ChimeraX-Help: 1.2
ChimeraX-HKCage: 1.3
ChimeraX-IHM: 1.1
ChimeraX-ImageFormats: 1.2
ChimeraX-IMOD: 1.0
ChimeraX-IO: 1.0.1
ChimeraX-ISOLDE: 1.4.dev0
ChimeraX-ItemsInspection: 1.0
ChimeraX-Label: 1.1
ChimeraX-ListInfo: 1.1.1
ChimeraX-Log: 1.1.5
ChimeraX-LookingGlass: 1.1
ChimeraX-Maestro: 1.8.1
ChimeraX-Map: 1.1
ChimeraX-MapData: 2.0
ChimeraX-MapEraser: 1.0
ChimeraX-MapFilter: 2.0
ChimeraX-MapFit: 2.0
ChimeraX-MapSeries: 2.1
ChimeraX-Markers: 1.0
ChimeraX-Mask: 1.0
ChimeraX-MatchMaker: 2.0.6
ChimeraX-MDcrds: 2.6
ChimeraX-MedicalToolbar: 1.0.1
ChimeraX-Meeting: 1.0
ChimeraX-MLP: 1.1
ChimeraX-mmCIF: 2.7
ChimeraX-MMTF: 2.1
ChimeraX-Modeller: 1.5.3
ChimeraX-ModelPanel: 1.3.2
ChimeraX-ModelSeries: 1.0
ChimeraX-Mol2: 2.0
ChimeraX-Morph: 1.0
ChimeraX-MouseModes: 1.1
ChimeraX-Movie: 1.0
ChimeraX-Neuron: 1.0
ChimeraX-Nucleotides: 2.0.2
ChimeraX-OpenCommand: 1.8
ChimeraX-PDB: 2.6.6
ChimeraX-PDBBio: 1.0
ChimeraX-PDBLibrary: 1.0.2
ChimeraX-PDBMatrices: 1.0
ChimeraX-PickBlobs: 1.0
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.1
ChimeraX-PubChem: 2.1
ChimeraX-ReadPbonds: 1.0.1
ChimeraX-Registration: 1.1
ChimeraX-RemoteControl: 1.0
ChimeraX-ResidueFit: 1.0
ChimeraX-RestServer: 1.1
ChimeraX-RNALayout: 1.0
ChimeraX-RotamerLibMgr: 2.0.1
ChimeraX-RotamerLibsDunbrack: 2.0
ChimeraX-RotamerLibsDynameomics: 2.0
ChimeraX-RotamerLibsRichardson: 2.0
ChimeraX-SaveCommand: 1.5
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0
ChimeraX-SelInspector: 1.0
ChimeraX-SeqView: 2.4.8
ChimeraX-Shape: 1.0.1
ChimeraX-Shell: 1.0
ChimeraX-Shortcuts: 1.1
ChimeraX-ShowAttr: 1.0
ChimeraX-ShowSequences: 1.0
ChimeraX-SideView: 1.0
ChimeraX-Smiles: 2.1
ChimeraX-SmoothLines: 1.0
ChimeraX-SpaceNavigator: 1.0
ChimeraX-StdCommands: 1.8
ChimeraX-STL: 1.0
ChimeraX-Storm: 1.0
ChimeraX-StructMeasure: 1.0.1
ChimeraX-Struts: 1.0.1
ChimeraX-Surface: 1.0
ChimeraX-SwapAA: 2.0
ChimeraX-SwapRes: 2.1.1
ChimeraX-TapeMeasure: 1.0
ChimeraX-Test: 1.0
ChimeraX-Toolbar: 1.1
ChimeraX-ToolshedUtils: 1.2.1
ChimeraX-Tug: 1.0
ChimeraX-UI: 1.16.2
ChimeraX-uniprot: 2.2
ChimeraX-UnitCell: 1.0
ChimeraX-ViewDockX: 1.1.2
ChimeraX-VIPERdb: 1.0
ChimeraX-Vive: 1.1
ChimeraX-VolumeMenu: 1.0
ChimeraX-VTK: 1.0
ChimeraX-WavefrontOBJ: 1.0
ChimeraX-WebCam: 1.0
ChimeraX-WebServices: 1.0
ChimeraX-Zone: 1.0
colorama: 0.4.4
comtypes: 1.1.10
cxservices: 1.1
cycler: 0.11.0
Cython: 0.29.26
debugpy: 1.5.1
decorator: 5.1.1
docutils: 0.17.1
entrypoints: 0.4
filelock: 3.4.2
fonttools: 4.30.0
funcparserlib: 1.0.0a0
grako: 3.16.5
h5py: 3.6.0
html2text: 2020.1.16
idna: 3.3
ihm: 0.26
imagecodecs: 2021.11.20
imagesize: 1.3.0
ipykernel: 6.6.1
ipython: 7.31.1
ipython-genutils: 0.2.0
jedi: 0.18.1
Jinja2: 3.0.3
jupyter-client: 7.1.0
jupyter-core: 4.9.2
kiwisolver: 1.3.2
line-profiler: 3.4.0
lxml: 4.7.1
lz4: 3.1.10
MarkupSafe: 2.1.0
matplotlib: 3.5.1
matplotlib-inline: 0.1.3
msgpack: 1.0.3
nest-asyncio: 1.5.4
netCDF4: 1.5.8
networkx: 2.6.3
numexpr: 2.8.1
numpy: 1.22.1
openvr: 1.16.802
packaging: 21.3
ParmEd: 3.4.3
parso: 0.8.3
pickleshare: 0.7.5
Pillow: 9.0.0
pip: 21.3.1
pkginfo: 1.8.2
prompt-toolkit: 3.0.28
psutil: 5.9.0
pycollada: 0.7.2
pydicom: 2.2.2
Pygments: 2.11.2
PyOpenGL: 3.1.5
PyOpenGL-accelerate: 3.1.5
pyparsing: 3.0.7
PyQt6-commercial: 6.2.3
PyQt6-sip: 13.2.0
PyQt6-WebEngine-commercial: 6.2.1
python-dateutil: 2.8.2
pytz: 2021.3
pywin32: 303
pyzmq: 22.3.0
qtconsole: 5.2.2
QtPy: 2.0.1
RandomWords: 0.3.0
requests: 2.27.1
scipy: 1.7.3
setuptools: 59.8.0
sfftk-rw: 0.7.1
six: 1.16.0
snowballstemmer: 2.2.0
sortedcontainers: 2.4.0
Sphinx: 4.3.2
sphinx-autodoc-typehints: 1.15.2
sphinxcontrib-applehelp: 1.0.2
sphinxcontrib-blockdiag: 3.0.0
sphinxcontrib-devhelp: 1.0.2
sphinxcontrib-htmlhelp: 2.0.0
sphinxcontrib-jsmath: 1.0.1
sphinxcontrib-qthelp: 1.0.3
sphinxcontrib-serializinghtml: 1.1.5
suds-community: 1.0.0
tables: 3.7.0
tifffile: 2021.11.2
tinyarray: 1.2.4
tornado: 6.1
traitlets: 5.1.1
urllib3: 1.26.8
wcwidth: 0.2.5
webcolors: 1.11.1
wheel: 0.37.1
wheel-filename: 1.3.0
WMI: 1.5.1
Change History (19)
comment:1 by , 4 years ago
| Platform: | → all |
|---|---|
| Project: | → ChimeraX |
comment:2 by , 4 years ago
| Cc: | added |
|---|---|
| Component: | Unassigned → Window Toolkit |
| Owner: | set to |
| Status: | new → accepted |
| Summary: | ChimeraX bug report submission → Qt6 shell tab-completion crash |
comment:3 by , 4 years ago
Any tab completion, such as "import chim<tab>".
I am going to let the shell-related packages float to their most recent versions and see if that fixes this in tomorrow's builds.
comment:4 by , 4 years ago
| Owner: | changed from to |
|---|---|
| Status: | accepted → assigned |
We are at the latest version of qtconsole, and the problem is the qtpy compatibility library they use not being Qt6 ready. Tom G. has already developed a bunch of patches for qtconsole, so reassigning to him (maybe should be Zach?) The code that produces the crash is:
cursor = QtGui.QTextCursor(block)
cursor.movePosition(QtGui.QTextCursor.StartOfBlock)
comment:5 by , 4 years ago
| Owner: | changed from to |
|---|
This doesn't look like a qtpy problem. We are using qtpy 2.0.1 (pulled in by qtconsole) and it supports PyQt6. We have a qtconsole_pyqt6.patch in prereqs/pips that I added to get qtconsole working with Qt 6. The current qtconsole 5.22 is from December and I don't know if it supports Qt 6 -- could try taking out our qtconsole_pyqt6.patch and seeing if it works. I see in the qtconsole github repository that they just merged in a pull request to support PyQt6 yesterday
https://github.com/jupyter/qtconsole/pull/525
So I guess that is not on PyPi. It might be worth trying the current qtconsole github source in ChimeraX to see if it fixes this tab completion crash. If it doesn't then maybe we can report a bug to qtconsole about it.
Reassigning to Zach since he is handling the Qt 5 to Qt 6 migration.
comment:6 by , 4 years ago
| Cc: | added |
|---|
comment:7 by , 4 years ago
I'm observing the same behavior when I pull the source from qtconsole's GitHub into ChimeraX's internal site-packages directory, so it may be a bug in their package.
comment:9 by , 4 years ago
Not solved by updates to qtpy, ipython, ipykernel, qtconsole, and jupyter-client have failed to solve the problem. I suspect the issue is somewhere in Jedi. It seems to complete certain things (mi<tab> becomes min) but fail at others (min(<tab> crashes and so does import i<tab)
comment:10 by , 4 years ago
Launching ChimeraX is actually not necessary to reproduce the bug. I have been testing by launching jupyter-qtconsole from ChimeraX's internal Python's bin directory, which just shows the qtconsole window. Tab completions that cause the tool to crash report segfaults on the command line. It also is not related to jedi, since removing it did not solve the issue either.
follow-up: 11 comment:11 by , 4 years ago
If qtconsole alone exhibits this bug it sounds like you have a simple test case and could report the bug. Although I long ago tried to get the qtconsole developers moving on Qt 6 and they were not very interested. So it probably will not solve our problem. Might need to just patch qtconsole to disable tab completion if we cannot find a better fix.
comment:12 by , 4 years ago
I think I'll see if I can glean additional information running it with faulthandler enabled and then report it.
comment:13 by , 4 years ago
I've opened a bug report. https://github.com/jupyter/qtconsole/issues/531
comment:14 by , 3 years ago
| Milestone: | → 1.4 |
|---|
Crash still happens, tried "import ma<tab>" in shell on Mac M1 ChimeraX with Qt 6.3.0.
This probably should be fixed for 1.4 release. Since the qtconsole developers are unlikely to make a fix in the next few weeks, we should probably just patch or monkey patch qtconsole to disable tab completion, or at least disable the tab completion cases that are known to crash.
comment:15 by , 3 years ago
Since I had to debug it for us anyway I went ahead and updated my issue on GitHub with what I found. I'll make the patch and submit it (and of course integrate it into ChimeraX's build process) and let them choose to take it or do their own thing. Luckily, they're just having trouble assigning the right completion manager to GUI instances of qtconsole, so once I solved that issue completion started working again.
comment:16 by , 3 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
This commit should solve it. Instead of relying on qtconsole to detect GUI mode and set the environment accordingly we always use the Qt completion widget instead of the ncurses one.
follow-up: 18 comment:18 by , 3 years ago
Great! Hopefully this will help the qtconsole devels home in on the source of the problem.
comment:19 by , 3 years ago
Sweet! That makes tinkering with options while setting up the new GUI so much easier.
Make that trying to tab-complete *anything* in the shell causes a crash.