Opened 8 years ago

Closed 8 years ago

#729 closed defect (nonchimerax)

ChimearX exits immediately after opening main window (Windows 7)

Reported by: hernando.sosa@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Graphics Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

$ ./ChimeraX.exe --debug
Initializing core
Toolshed: __init__ False False None
Toolshed: cache dir: C:\Users\hsosa\AppData\Local\UCSF\ChimeraX\Cache\0.1\toolshed
Toolshed: data dir: C:\Users\hsosa\AppData\Local\UCSF\ChimeraX\0.1\toolshed
Toolshed: site dir: C:\Users\hsosa\AppData\Local\UCSF\ChimeraX\0.1\site-packages
Toolshed: loading bundles
Toolshed: reload False False
Toolshed: _bundle_cache False
Toolshed: changing METADATA_FILENAME metadata.json
Toolshed: InstalledBundleCache.load: rebuild_cache False
Toolshed: InstalledBundleCache._read_cache: C:\Users\hsosa\AppData\Local\UCSF\ChimeraX\Cache\0.1\toolshed\bundle_info.cache
Toolshed: _is_cache_newer
Toolshed: InstalledBundleCache._read_cache: 47 bundles
Toolshed: InstalledBundleCache.load: using cached data
Toolshed: changing back METADATA_FILENAME pydist.json
Toolshed: delay_registration info
Toolshed: delay_registration listinfo
Toolshed: delay_registration struts
Toolshed: register_file_type cellpack
Toolshed: register_file_type StereoLithography
Toolshed: delay_registration device vr
Toolshed: delay_registration vr
Toolshed: register_file_type MMTF
Toolshed: delay_registration device snav
Toolshed: register_file_type IHM
Toolshed: register_file_type Binary Coordinates
Toolshed: delay_registration remotecontrol rest
Toolshed: register_file_type Gromacs full-precision coordinates
Toolshed: register_file_type Gromacs compressed coordinates
Toolshed: register_file_type DCD coordinates
Toolshed: delay_registration remotecontrol xmlrpc
Toolshed: delay_registration debug test
Toolshed: delay_registration sequence
Toolshed: register_file_type FASTA
Toolshed: register_file_type MSF
Toolshed: register_file_type PIR
Toolshed: delay_registration echo
Toolshed: delay_registration log
Toolshed: delay_registration crosslinks
Toolshed: register_file_type STORM
Toolshed: delay_registration morph
Toolshed: delay_registration 2dlabels
Toolshed: register_file_type VTK PolyData
Toolshed: delay_registration addmissingatoms
Toolshed: delay_registration mlp
Toolshed: delay_registration cage
Toolshed: delay_registration contacts
Toolshed: delay_registration mseries
Toolshed: delay_registration smoothlines
Toolshed: delay_registration help
Toolshed: register_file_type HTML
Toolshed: delay_registration resfit
Toolshed: delay_registration blastprotein
Toolshed: delay_registration blastpdb
Toolshed: register_file_type Directional FSC
Toolshed: delay_registration ks
Toolshed: delay_registration matchmaker
Toolshed: delay_registration mmaker
Toolshed: delay_registration ribbon
Toolshed: delay_registration ribbon hide
Toolshed: _get_api chimerax.exp_cmd <module 'chimerax.exp_cmd' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\exp_cmd\\__init__.py'> <chimerax.exp_cmd._MyAPI object at 0x0000000009CDDDD8>
Toolshed: delay_registration ~ribbon
Toolshed: delay_registration getcrd
Toolshed: delay_registration debug
Toolshed: delay_registration movie
Toolshed: register_file_type Sybyl Mol2
Toolshed: finished loading bundles
Initializing bundles
Toolshed: <chimerax.core.logger.Logger object at 0x0000000002C464E0> initialize_bundles
Toolshed: AvailableBundleCache.load: toolshed_url https://cxtoolshed.rbvi.ucsf.edu
Toolshed: AvailableBundleCache.load: url https://cxtoolshed.rbvi.ucsf.edu/bundle/
Toolshed: _get_api chimerax.tug <module 'chimerax.tug' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\tug\\__init__.py'> <chimerax.tug._TugAPI object at 0x0000000009CEB208>
Toolshed: _get_api chimerax.rest_server <module 'chimerax.rest_server' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\rest_server\\__init__.py'> <chimerax.rest_server._MyAPI object at 0x0000000009CF3588>
Toolshed: _get_api chimerax.seqalign <module 'chimerax.seqalign' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\seqalign\\__init__.py'> <chimerax.seqalign._AlignmentsBundleAPI object at 0x0000000009CF3940>
Toolshed: _get_api chimerax.map_series_gui <module 'chimerax.map_series_gui' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\map_series_gui\\__init__.py'> <chimerax.map_series_gui._MyAPI object at 0x0000000009CFE748>
Toolshed: _get_api chimerax.match_maker <module 'chimerax.match_maker' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\match_maker\\__init__.py'> <chimerax.match_maker._MyAPI object at 0x0000000009D0E908>
Toolshed: _get_api chimerax.mav <module 'chimerax.mav' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\mav\\__init__.py'> <chimerax.mav._MavBundleAPI object at 0x0000000009D15358>
Starting main interface
Toolshed: _get_api chimerax.shortcuts <module 'chimerax.shortcuts' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\shortcuts\\__init__.py'> <chimerax.shortcuts._MyAPI object at 0x000000000AC097F0>
Toolshed: _get_api chimerax.log <module 'chimerax.log' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\log\\__init__.py'> <chimerax.log._MyAPI object at 0x000000000AC3E470>
Toolshed: _get_api chimerax.model_panel <module 'chimerax.model_panel' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\model_panel\\__init__.py'> <chimerax.model_panel._MyAPI object at 0x000000000C661400>
Toolshed: _get_api chimerax.mouse_modes <module 'chimerax.mouse_modes' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\mouse_modes\\__init__.py'> <chimerax.mouse_modes._MyAPI object at 0x000000000C6840F0>
Toolshed: _get_api chimerax.shortcuts <module 'chimerax.shortcuts' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\shortcuts\\__init__.py'> <chimerax.shortcuts._MyAPI object at 0x000000000AC097F0>
Toolshed: _get_api chimerax.cmd_line <module 'chimerax.cmd_line' from 'C:\\Program Files\\ChimeraX\\bin\\lib\\site-packages\\chimerax\\cmd_line\\__init__.py'> <chimerax.cmd_line._MyAPI object at 0x000000000C68C320>
Finished initialization
Toolshed: processing tool: Tempy
Toolshed: processing command: sccc
Toolshed: processing command: stringdb
Toolshed: processing command: cytoscape
Toolshed: processing tool: ISOLDE
Toolshed: processing command: fps
Toolshed: processing command: isolde
Toolshed: processing tool: Clipper
Toolshed: processing tool: Clipper
Toolshed: processing tool: ISOLDE
Toolshed: processing command: fps
Toolshed: processing command: isolde
Toolshed: processing tool: ISOLDE
Toolshed: processing command: fps
Toolshed: processing command: isolde
Toolshed: processing tool: ISOLDE
Toolshed: processing command: fps
Toolshed: processing command: isolde
Traceback (most recent call last):
  File "C:\Program Files\ChimeraX\bin\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Program Files\ChimeraX\bin\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Program Files\ChimeraX\bin\lib\site-packages\ChimeraX_main.py", line 677, in <module>
    exit_code = init(sys.argv)
  File "C:\Program Files\ChimeraX\bin\lib\site-packages\ChimeraX_main.py", line 525, in init
    sess.logger.info('OpenGL version: ' + r.opengl_version())
  File "C:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\core\graphics\opengl.py", line 575, in opengl_version
    return GL.glGetString(GL.GL_VERSION).decode('utf-8')
  File "C:\Program Files\ChimeraX\bin\lib\site-packages\OpenGL\platform\baseplatform.py", line 402, in __call__
    return self( *args, **named )
  File "zr\accelerate\src\errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError (src\errorchecker.c:1270)
OpenGL.error.GLError: GLError(
                err = 1280,
                description = b'invalid enumerant',
                baseOperation = glGetString,
                cArguments = (GL_VERSION,),
                result = b'3.3.12002 Core Profile Forward-Compatible Context 9.12.0.0'
)


Change History (8)

comment:1 by Eric Pettersen, 8 years ago

Component: UnassignedGraphics
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimearX exits immediately after openin main window (Windows 7)ChimearX exits immediately after opening main window (Windows 7)

comment:2 by Tom Goddard, 8 years ago

ChimeraX fails to start because of an OpenGL error. It is a strange message because it does not appear to be an error in the OpenGL call that is being made to get the version -- in fact that call returns that it got OpenGL 3.3. But the way OpenGL works it saves the last error until it is cleared, so apparently an OpenGL error occurred earlier. But this is the first explicit OpenGL call our code does. So the error must have been in Qt code that setup the OpenGL context. But our Qt calls to do that don't return any error.

At any rate, the problem is almost certainly a deficient system OpenGL driver. But it may be that if we ignore (just log it) that error maybe ChimeraX will function. I'm going to test on an ancient Windows 7 machine to see if I can get this error, and if we have such a machine try to put in code to check, log and clear the OpenGL error.

comment:3 by Tom Goddard, 8 years ago

I've reproduced this on a very old Windows 7 box. It starts ChimeraX, shows the main window, then flashes up a dialog box that is blank and probably shows an error and immediately disappears. Unfortunately --debug at a Windows Command Prompt does not give any output. Looks like you used cygwin. This is a test lab machine that I can't install cygwin on since we use it to test without development environment.

in reply to:  4 ; comment:4 by hernando.sosa@…, 8 years ago

Yes I ran it from a cygwin terminal window/

Hernando Sosa
Dept. of Physiology and Biophysics 
Albert Einstein College of Medicine 
1300 Morris Park Av. 
Bronx NY 10461 
phone (718) 430-3456 
FAX (718) 430-8819 
email hernando.sosa@einstein.yu.edu

-----Original Message-----
From: ChimeraX [mailto:ChimeraX-bugs-admin@cgl.ucsf.edu] 
Sent: Friday, June 16, 2017 6:25 PM
Cc: goddard@cgl.ucsf.edu; Hernando J Sosa
Subject: Re: [ChimeraX] #729: ChimearX exits immediately after opening main window (Windows 7)

#729: ChimearX exits immediately after opening main window (Windows 7)
--------------------------------------+----------------------
          Reporter:  hernando.sosa@…  |      Owner:  goddard
              Type:  defect           |     Status:  assigned
          Priority:  normal           |  Milestone:
         Component:  Graphics         |    Version:
        Resolution:                   |   Keywords:
        Blocked By:                   |   Blocking:
Notify when closed:                   |   Platform:  all
           Project:  ChimeraX         |
--------------------------------------+----------------------

Comment (by goddard):

 I've reproduced this on a very old Windows 7 box.  It starts ChimeraX,  shows the main window, then flashes up a dialog box that is blank and  probably shows an error and immediately disappears.  Unfortunately --debug  at a Windows Command Prompt does not give any output.  Looks like you used  cygwin.  This is a test lab machine that I can't install cygwin on since  we use it to test without development environment.

--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/729#comment:3>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker

comment:5 by Tom Goddard, 8 years ago

Testing shows that Qt gets some OpenGL error before the ChimeraX uses any OpenGL and then when we use our first OpenGL call it produces an error and causes the program to quit. If I clear that error the ChimeraX starts and can display a molecule, and rotate it. But if I turn on shadows it gets another OpenGL error caused by an incomplete framebuffer. It is possible that ChimeraX OpenGL is using something beyond OpenGL 3.3. When I ask for OpenGL 4.1 the driver cannot provide it and ChimeraX exits at startup (needs to be fixed to show message). Another possibility is that the graphics driver is not compliant with 3.3.

This will require more testing and better error handling in ChimeraX. But ultimately the problem is very likely that the graphics driver is not up to the job and you need to either update your driver or use ChimeraX on a more modern computer.

comment:6 by Tom Goddard, 8 years ago

Resolution: fixed
Status: assignedclosed

I put in code to report and ignore this OpenGL error on startup. On my test machine (old Windows 7 with AMD Radeon HD4850] it then ran into an error with shadows not being able to create the framebuffer. I fixed that with some extra code -- may be a driver bug, or maybe a ChimeraX bug where it wanted the new shadow framebuffer to be explicitly told it was depth only with no color buffer. After that it hit another OpenGL shader error "unexpected error" during shader compilation when using ambient shadows. Some debugging showed this could be avoided if the maximum number of shadow directions that OpenGL said it could handle (size of uniform matrix array in shader) was cut from 1024 to 512. This driver bug I have no simple way to detect. But I added new error code that will suggest updating the graphics driver when a shader compilation fails. Also added a "graphics restart" command if you turn off ambient shadows and want the graphics to come back to life.

All these improvements are aimed at giving better feedback when the computer has an inadequate graphics driver, which will be common for older (more than 3 year old) computers.

comment:7 by Tom Goddard, 8 years ago

Resolution: fixed
Status: closedreopened

comment:8 by Tom Goddard, 8 years ago

Resolution: nonchimerax
Status: reopenedclosed
Note: See TracTickets for help on using tickets.