Changes between Version 6 and Version 7 of Ticket #15277, comment 12
- Timestamp:
- Jun 4, 2024, 9:21:06 PM (19 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #15277, comment 12
v6 v7 8 8 9 9 Surprisingly logging the screen remove to a file shows that ChimeraX does get the screen remove callback before the crash. So why does it not crash if I block redraw before unplugging but it does crash if only the remove screen callback blocks redraw? It must be that a redraw occurs before the screen removed callback but it doesn't crash until later after the screen removed callback. In other words the crash is set up before the callback but happens after the callback. 10 11 It appears that the crash is caused by running the graphics update loop before the screen remove callback. It still crashed even if it never drew the graphics as long as it ran the update loop (new frame callback, ...). That is why blocking update avoids the crash because the update loop is not run. Writing log messages to a file shows that the update loop is not called after the remove screen callback when it crashes. So somehow the update loop just before the screen removed callback causes the crash. I included the number of screens in the logged update loop output and the last log entry before the screen remove log entry shows it still thinks it has two screens. So even if I determine what Qt calls in the update loop are leading to the crash it doesn't look like I will have any way of knowing that the screen remove is in process and will cause a crash.