Opened 6 years ago

Closed 6 years ago

#2317 closed defect (fixed)

OpenGL buffer "None" was not deleted

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

Description

The following bug report has been submitted:
Platform:        Darwin-18.7.0-x86_64-i386-64bit
ChimeraX Version: 0.91 (2019-08-06)
Description
Buffer not deleted error after moving volume threshold back and forth on histogram to ends of range, then stopping in middle and selecting surface.  This test case was discovered by Tristan Croll.

Log:
UCSF ChimeraX version: 0.91 (2019-08-06)  
© 2016-2019 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open 1a0m format mmCIF fromDatabase pdb

1a0m title:  
1.1 angstrom crystal structure of A-conotoxin [TYR15]-epi [more info...]  
  
Chain information for 1a0m #1  
---  
Chain | Description  
A B | α-conotoxin [TYR15]-epi  
  
Non-standard residues in 1a0m #1  
---  
NH2 — amino group  
  
  

> molmap #1 3

> surface zone #2 nearAtoms #1 distance 2

> select #2

2 models selected  
Exception ignored in: <function Buffer.__del__ at 0x11a6f2b90>  
Traceback (most recent call last):  
File "/Users/goddard/Desktop/ChimeraX Aug 6
2019.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/graphics/opengl.py", line 2440, in __del__  
% self.shader_variable_name)  
chimerax.core.graphics.opengl.OpenGLError: OpenGL buffer "None" was not
deleted before core.graphics.Buffer destroyed  




OpenGL version: 4.1 ATI-2.11.20
OpenGL renderer: AMD Radeon Pro 580 OpenGL Engine
OpenGL vendor: ATI Technologies Inc.

Change History (2)

comment:1 by Tom Goddard, 6 years ago

Cc: tic20@… added
Component: UnassignedGraphics
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionOpenGL buffer "None" was not deleted

comment:2 by Tom Goddard, 6 years ago

Resolution: fixed
Status: assignedclosed

Fixed.

A Drawing was deleting the element (triangle) buffer when there were zero triangles and setting its DrawShape.element_buffer = None, but the element buffer was sometimes still in the _buffers_need_update set, causing the deleted buffer to be revived. But then that revived buffer never had the delete_buffer() method called on it because the element_buffer attribute no longer pointed to it. This took hours to track down and has been reported several times in the past year. I was only able to figure it out from a reproducible test case discovered by Tristan.

To fix this the code no longer deletes the element buffer when there are 0 triangles, it just keeps a zero triangle buffer. Also I made it raise an error to try to revive a deleted buffer.

Note: See TracTickets for help on using tickets.