Hi Łukasz,

tonite I found a critical bug that affects all heaptype extension
classes with a custom (not PyType_Type) type.

the bug is in typeobject.c function type_mro_modified line 309:

    if (custom) {
        _Py_IDENTIFIER(mro);
        mro_meth = lookup_maybe_method(
            (PyObject *)type, &PyId_mro, &unbound);
        if (mro_meth == NULL)
            goto clear;
        Py_INCREF(mro_meth);
        type_mro_meth = lookup_maybe_method(
            (PyObject *)&PyType_Type, &PyId_mro, &unbound);
        if (type_mro_meth == NULL)
            goto clear;
        Py_INCREF(type_mro_meth);
        if (mro_meth != type_mro_meth)
            goto clear;
        Py_XDECREF(mro_meth);
        Py_XDECREF(type_mro_meth);
    }

This block is wrong because it decrefs a value that comes from
lookup_maybe_method which does not incref.

The code is easily fixed by two Py_INCREF s.

Please let me know how you want to proceed.
This is a critical error, producing negative refcounts.

Cheers -- Chris


On 10.12.19 10:22, Łukasz Langa wrote:
> Python 3.8.1rc1 is the release candidate of the first maintenance
> release of Python 3.8.
> 
> The Python 3.8 series is the newest feature release of the Python
> language, and it contains many new features and optimizations. You can
> find Python 3.8.1rc1 here:
> 
> https://www.python.org/downloads/release/python-381rc1/
> 
> Assuming no critical problems are found prior to *2019-12-16*, the
> scheduled release date for *3.8.1* as well as *Ned Deily's birthday*, no
> code changes are planned between this release candidate and the final
> release.
> 
> That being said, please keep in mind that this is a pre-release of 3.8.1
> and as such its main purpose is testing.
> 
> See the “What’s New in Python 3.8
> <https://docs.python.org/3.8/whatsnew/3.8.html>” document for more
> information about features included in the 3.8 series. Detailed
> information about all changes made in 3.8.0 can be found in its change log.
> 
> Maintenance releases for the 3.8 series will continue at regular
> bi-monthly intervals, with *3.8.2* planned for February 2020.
> 
> 
>       We hope you enjoy Python 3.8!
> 
> Thanks to all of the many volunteers who help make Python Development
> and these releases possible! Please consider supporting our efforts by
> volunteering yourself or through organization contributions to the
> Python Software Foundation.
> 
> https://www.python.org/psf/
> 
> 
> _______________________________________________
> Python-Dev mailing list -- python-...@python.org
> To unsubscribe send an email to python-dev-le...@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at 
> https://mail.python.org/archives/list/python-...@python.org/message/IGJ6ZOAOT2WFY5ZIPRQNTHOSUMPUAO2H/
> Code of Conduct: http://python.org/psf/codeofconduct/
> 


-- 
Christian Tismer             :^)   tis...@stackless.com
Software Consulting          :     http://www.stackless.com/
Karl-Liebknecht-Str. 121     :     https://github.com/PySide
14482 Potsdam                :     GPG key -> 0xFB7BEE0E
phone +49 173 24 18 776  fax +49 (30) 700143-0023

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
python-committers mailing list -- python-committers@python.org
To unsubscribe send an email to python-committers-le...@python.org
https://mail.python.org/mailman3/lists/python-committers.python.org/
Message archived at 
https://mail.python.org/archives/list/python-committers@python.org/message/6VIEOGQJ433TVQZRYFXQ7SWQM3XRBBKD/
Code of Conduct: https://www.python.org/psf/codeofconduct/

Reply via email to