[docs] [issue32374] Document that m_traverse for multi-phase initialized modules can be called with m_state=NULL

STINNER Victor report at bugs.python.org
Fri May 25 11:48:02 EDT 2018

STINNER Victor <vstinner at redhat.com> added the comment:

This particular kind of bad traverse is quite easy to write if an extension author doesn't read docs carefully, or has read an old version of them (before the fix here). And resulting errors aren't too obvious. So, there's code to crash early and loudly in "--with-pydebug" for simple oversight cases. See comment at the call site of bad_traverse_test in Objects/moduleobject.c
And since there's code, there's a test to make sure it works :)

Oh ok, it makes sense. Maybe the test should test at least just before spec.loader.create_module(). Maybe using a print().

"Thanks! Didn't know about that one, will keep it in mind for next time!"

The problem is that by default, on Linux, we don't dump core files on the current directory. So such bug is silent on Linux. But it's commonly detected on FreeBSD since I configured the test runner to fail if it leaves a new file.


Python tracker <report at bugs.python.org>

More information about the docs mailing list