Message372574
Hello zd nex
After a little research, it became clear that this drop is due to vague garbage collection behavior. As you know, method `__del__` is called by the garbage collector and when this happens there is no guarantee that the rest of the objects are not yet cleaned.
def __del__(self):
if not hasattr(self, 'writeback'):
return
self.close()
But in the `close` method, synchronization with the disk occurred and objects were created for modules that were no longer in memory and, as a result, method `dump` fell with an error, because when trying to get module `pickle` it was already gone (due to the garbage collector).
Modules/_pickle.c
....
4353 PickleState *st = _Pickle_GetGlobalState();
....
But `_Pickle_GetGlobalState` can't return right result because pickle module was gone from memory by garbage collector.
In this case, you encountered a problem when the C code tried to use a module that was no longer in memory since this module deleted the garbage collector. |
|
Date |
User |
Action |
Args |
2020-06-29 13:05:04 | dorosch | set | recipients:
+ dorosch, zd nex |
2020-06-29 13:05:04 | dorosch | set | messageid: <1593435904.92.0.662995087387.issue39672@roundup.psfhosted.org> |
2020-06-29 13:05:04 | dorosch | link | issue39672 messages |
2020-06-29 13:05:04 | dorosch | create | |
|