#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
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.