Opened 6 years ago

Closed 6 years ago

#2688 closed defect (fixed)

Infinite recursion of map.session.existing_directory

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

Description

The following bug report has been submitted:
Platform:        Windows-7-6.1.7601-SP1
ChimeraX Version: 0.91 (2019-12-16)
Description
Opening of a session file (cxs).

Log:
Startup Messages  
---  
warning | 'clip' is a prefix of an existing command 'clipper'  
  
UCSF ChimeraX version: 0.91 (2019-12-16)  
© 2016-2019 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open "C:\Users\jva020\OneDrive - University of Bergen\MyoA-
> Act1_paper\Figures\figs2_tail_model\working_files\model_for_powerstroke.cxs"

Unable to restore session, resetting.  
  
Traceback (most recent call last):  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\core\session.py", line 653, in restore  
obj = sm.restore_snapshot(self, data)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 219, in restore_snapshot  
grids = grid_data_from_state(data, gdcache, session, rfp)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 362, in grid_data_from_state  
base_path = session.session_file_path)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 136, in absolute_path  
apath = file_paths.find(fpath,ask)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 251, in find  
starting_directory = existing_directory(path))  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
[Previous line repeated 969 more times]  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 285, in existing_directory  
d = dirname(path)  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 221, in dirname  
return split(p)[0]  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 184, in split  
seps = _get_bothseps(p)  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 35, in
_get_bothseps  
if isinstance(path, bytes):  
RecursionError: maximum recursion depth exceeded while calling a Python object  
  
opened ChimeraX session  

> open "C:/Users/jva020/OneDrive - University of Bergen/MyoA-
> Act1_paper/Figures/figs2_tail_model/working_files/model_for_powerstroke2.cxs"

Unable to restore session, resetting.  
  
Traceback (most recent call last):  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\core\session.py", line 653, in restore  
obj = sm.restore_snapshot(self, data)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 219, in restore_snapshot  
grids = grid_data_from_state(data, gdcache, session, rfp)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 362, in grid_data_from_state  
base_path = session.session_file_path)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 136, in absolute_path  
apath = file_paths.find(fpath,ask)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 251, in find  
starting_directory = existing_directory(path))  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
[Previous line repeated 972 more times]  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 285, in existing_directory  
d = dirname(path)  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 221, in dirname  
return split(p)[0]  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 184, in split  
seps = _get_bothseps(p)  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 35, in
_get_bothseps  
if isinstance(path, bytes):  
RecursionError: maximum recursion depth exceeded while calling a Python object  
  
opened ChimeraX session  

> open "C:/Users/jva020/OneDrive - University of Bergen/MyoA-
> Act1_paper/Figures/figs2_tail_model/model_for_powerstroke.cxs"

Unable to restore session, resetting.  
  
Traceback (most recent call last):  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\core\session.py", line 653, in restore  
obj = sm.restore_snapshot(self, data)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 219, in restore_snapshot  
grids = grid_data_from_state(data, gdcache, session, rfp)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 362, in grid_data_from_state  
base_path = session.session_file_path)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 136, in absolute_path  
apath = file_paths.find(fpath,ask)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 251, in find  
starting_directory = existing_directory(path))  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
[Previous line repeated 972 more times]  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 285, in existing_directory  
d = dirname(path)  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 221, in dirname  
return split(p)[0]  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 184, in split  
seps = _get_bothseps(p)  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 35, in
_get_bothseps  
if isinstance(path, bytes):  
RecursionError: maximum recursion depth exceeded while calling a Python object  
  
opened ChimeraX session  

> open D:/model_for_powerstroke.cxs

Unable to restore session, resetting.  
  
Traceback (most recent call last):  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\core\session.py", line 653, in restore  
obj = sm.restore_snapshot(self, data)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 219, in restore_snapshot  
grids = grid_data_from_state(data, gdcache, session, rfp)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 362, in grid_data_from_state  
base_path = session.session_file_path)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 136, in absolute_path  
apath = file_paths.find(fpath,ask)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 251, in find  
starting_directory = existing_directory(path))  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 288, in existing_directory  
return existing_directory(d)  
[Previous line repeated 972 more times]  
File "D:\Program Files\ChimeraX-daily\bin\lib\site-
packages\chimerax\map\session.py", line 285, in existing_directory  
d = dirname(path)  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 221, in dirname  
return split(p)[0]  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 184, in split  
seps = _get_bothseps(p)  
File "D:\Program Files\ChimeraX-daily\bin\lib\ntpath.py", line 35, in
_get_bothseps  
if isinstance(path, bytes):  
RecursionError: maximum recursion depth exceeded while calling a Python object  
  
opened ChimeraX session  




OpenGL version: 3.3.0 NVIDIA 376.51
OpenGL renderer: Quadro K1200/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
File attachment: model_for_powerstroke.cxs

model_for_powerstroke.cxs

Attachments (1)

model_for_powerstroke.cxs (603.3 KB ) - added by juha.vahokoski@… 6 years ago.
Added by email2trac

Download all attachments as: .zip

Change History (3)

by juha.vahokoski@…, 6 years ago

Attachment: model_for_powerstroke.cxs added

Added by email2trac

comment:1 by Eric Pettersen, 6 years ago

Component: UnassignedSessions
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionInfinite recursion of map.session.existing_directory

comment:2 by Tom Goddard, 6 years ago

Resolution: fixed
Status: assignedclosed

Fixed.

Opening a session that contains a path to a map in a subdirectory when the map is no longer there caused this infinite recursion problem when it tried to find a parent directory of the original map that still exists and show a replace file dialog starting at that directory. But in this case the path was relative and the parent directory became and empty string and the code did not handle that properly.

Note: See TracTickets for help on using tickets.